2016-11-27 79 views
1

我有一些與複製文件夾結構有關的問題。實際上,我需要將PDF文件轉換爲文本文件。因此,我有這樣的地方文件夾結構,我導入PDF:python在另一個目錄下複製文件夾結構

D:/f/subfolder1/subfolder2/a.pdf 

而且我想創建「D:/g/subfolder1/subfolder2/」下,但沒有PDF文件中的確切文件夾結構,因爲我需要把這個地方轉換後的文本文件。所以,轉換功能後,它給了我

D:/g/subfolder1/subfolder2/a.txt 

同時,我想補充,如果功能,以確保在「D:/g/」相同的文件夾結構不產生之前就已存在。

這是我目前的代碼。那麼如何在沒有文件的情況下創建相同的文件夾結構?

謝謝!

import converter as c 
import os 
inputpath = 'D:/f/' 
outputpath = 'D:/g/' 

for root, dirs, files in os.walk(yourpath, topdown=False): 
    for name in files: 
     with open("D:/g/"+ ,mode="w") as newfile: 
      newfile.write(c.convert_pdf_to_txt(os.path.join(root, name))) 

回答

3

對我來說,以下工作正常:

  • 遍歷現有的文件夾

  • 構建基於現有的新文件夾

  • 檢查,如果新的文件夾結構不存在
  • 如果是這樣的結構,創建新的文件夾沒有文件

代碼:

import os 

inputpath = 'D:/f/' 
outputpath = 'D:/g/' 

for dirpath, dirnames, filenames in os.walk(inputpath): 
    structure = os.path.join(outputpath, dirpath[len(inputpath):]) 
    if not os.path.isdir(structure): 
     os.mkdir(structure) 
    else: 
     print("Folder does already exits!") 

文檔:

+0

太棒了! ;)) – SXC88

+0

@ SXC88 - 很高興爲您服務:D – linusg

2

如何使用shutil.copytree()?

import shutil 
def ig_f(dir, files): 
    return [f for f in files if os.path.isfile(os.path.join(dir, f))] 

shutil.copytree(inputpath, outputpath, ignore=ig_f) 

shutil.copytree without files

+0

無其實我只是想沒有確切的文件複製文件夾結構... – SXC88

+0

這是我的理解:你有SRCDIR其中有一些PDF文件。你有一個dstDir你想要.txt轉換文件。你也想保留目錄結構。並且希望目標目錄與源目錄具有相同的目錄結構。我錯了什麼,或者你需要什麼額外的東西? – kumardeepakr3

+0

回溯(最近一次通話最後): 文件「C:/ Users/sxc/Desktop/python file/pdf converter/pdfminer-20140328/b.py」,第12行,在 shutil。copytree(inputpath,outputpath,ignore = ig_f) 文件「C:\ Python27 \ lib \ shutil.py」,行177,副本集 os.makedirs(dst) 文件「C:\ Python27 \ lib \ os.py 「,157行,在makedirs mkdir(名稱,模式) WindowsError:[錯誤183]:'D:/ g /'它會引發此錯誤消息。如果在創建之前文件夾結構已經存在於「D:/ g /」下,我想用if語句進行測試 – SXC88

1

一個小調整帶到你的代碼跳過pdf文件:

for root, dirs, files in os.walk('.', topdown=False): 
    for name in files: 
     if name.find(".pdf") >=0: continue 
     with open("D:/g/"+ ,mode="w") as newfile: 
      newfile.write(c.convert_pdf_to_txt(os.path.join(root, name))) 
相關問題