如何在保留其目录结构的同时在Python中复制文件?

时间:2012-08-21 17:53:45

标签: python copy directory file-copying

我有一个包含许多子目录的目录列表。

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不存在。

谢谢!

2 个答案:

答案 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创建目录。

然后我可以使用原始的完整路径并在目录结构存在的情况下复制文件。