2016-11-27 148 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))) 
相关问题