Как я могу копировать файлы в Python, сохраняя при этом их структуру каталогов?

У меня есть список каталогов, которые имеют много подкаталогов.

ex C:\home\test\myfiles\myfile.txt

Я хочу скопировать это на мой X: привод. Как мне скопировать myfile.txt если X: диск содержит только X:\\home?

я думал shutil будет создавать необходимые каталоги при копировании файлов, но я был не прав, и я не уверен, что использовать.

Адрес по-другому...

Я хочу скопировать C:\\home\\test\\myfiles\\myfile.txt в X:\\home\\test\\myfiles\\myfile.txt но X:\\home\\test\\myfiles не существует.

Спасибо!

2 ответа

Вам нужно использовать os.makedirs вдоль стороны shutil.copytree,

Итак, вот что я в итоге сделал. Мгилсон был прав, мне нужно было использовать македиры, однако мне не нужно было копировать дерево.

for filepath in myfilelist:
    try:
        with open(filepath) as f: pass
    except IOError as e:
        splitlocaldir = filepath.split(os.sep)
        splitlocaldir.remove(splitlocaldir[-1:][0])
        localdir = ""
        for item in splitlocaldir:
            localdir += item + os.sep
        if not os.path.exists(localdir):
            os.makedirs(localdir)
        shutil.copyfile(sourcefile, filepath)

Это разделяет каталог на список, так что я могу извлечь имя файла, превратив путь в каталог.

Затем я соединяю их вместе и проверяю, существует ли каталог.

Если нет, я создаю каталог, используя os.makedirs.

Затем я могу использовать свой оригинальный полный путь и скопировать файл сейчас, когда структура каталогов существует.

Другие вопросы по тегам