我有一个包含许多子目录的目录列表。
e.x。 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
不存在。
谢谢!
答案 0 :(得分:2)
您需要在os.makedirs
旁边使用shutil.copytree
。
答案 1 :(得分:2)
所以这就是我最终做的事情。 mgilson是对的我需要使用makedirs,但是我不需要复制树。
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创建目录。
然后我可以使用原始的完整路径并在目录结构存在的情况下复制文件。