2016-11-27 9 views
1

У меня есть некоторые вопросы, связанные с копированием структуры папок. На самом деле, мне нужно сделать преобразование файлов PDF в текстовые файлы. Поэтому у меня есть такая структура папок для того места, где я импортировать PDF:Структура папки python copy в другом каталоге

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

Traceback (последний последний звонок): Файл «C:/Users/sxc/Desktop/python file/pdf converter/pdfminer-20140328/b.py», строка 12, в shutil.copytree (входной путь, путь выхода, ignore = ig_f) Файл «C: \ Python27 \ lib \ shutil.py», строка 177, в copytree os.makedirs (dst) Файл «C: \ Python27 \ lib \ os.py ", строка 157, в makedirs mkdir (имя, режим) WindowsError: [Ошибка 183]: 'D:/g /' это выдает мне это сообщение об ошибке. а также я бы хотел проверить с помощью инструкции if, если структура папок уже существует под «D:/g /» перед созданием – SXC88

1

Несовершеннолетнего Tweak вашего кода для пропуска 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)))