Python:从多个位置复制目录,而不是文件,如果同名则覆盖

时间:2013-10-15 06:55:55

标签: python

我有一个主文件夹netbooks_nbo,其中包含更多过时的文件夹。我想获取最后七个文件夹(按上次修改日期)并将它们复制到C:\驱动器上的某个位置。这是我目前的代码:

代码如下所示:

import os
import distutils.core

def get_immediate_subdirectories(dir):
    return [os.path.join(dir, name) for name in os.listdir(dir)
            if os.path.isdir(os.path.join(dir, name))]

def main():
    path = "\\\\Network_Drive\\netbooks_nbo"
    all_dirs = get_immediate_subdirectories(path)
    all_dirs.sort(key=lambda x: os.path.getmtime(x))
    all_dirs = all_dirs[len(all_dirs)-7: len(all_dirs)]

    for i in all_dirs:
        for n in get_immediate_subdirectories(i):
            distutils.dir_util.copy_tree(n, "C:\\AllFiles")
            print "copied"+ n

问题是dir_util.copy_tree会复制所有文件,而不是实际目录。我想保留目录结构。我尝试使用shutil.copytree(src, dst),但它只返回一个错误,因为在for循环的一次迭代后C:\ AllFiles已经存在。由于一些奇怪的权限错误,shutil.copy(src,dst)无法正常工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果目录树不是太大,您可以将每个目录树打包成archive file,然后将每个存档文件解压缩到目的地。