Как я могу копировать файлы в 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.
Затем я могу использовать свой оригинальный полный путь и скопировать файл сейчас, когда структура каталогов существует.