0

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

例如 C:\home\test\myfiles\myfile.txt

我想把它复制到我的X:驱动器上。myfile.txt如果X:驱动器仅包含,我该如何复制X:\\home

我以为shutil在复制文件时会创建必要的目录,但我错了,我不确定该使用什么。

换一种说法...

我想复制C:\\home\\test\\myfiles\\myfile.txtX:\\home\\test\\myfiles\\myfile.txtX:\\home\\test\\myfiles不存在。

谢谢!

4

2 回答 2

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

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

于 2012-08-21T18:34:45.247 回答
2

您需要使用os.makedirsside shutil.copytree

于 2012-08-21T18:00:26.437 回答