Python:递归复制批量目录

时间:2015-11-18 21:10:33

标签: python recursion copy

我正在尝试在工作中创建一个脚本,允许我们输入一堆目录路径,然后递归地将这些目录复制到新计算机。这是我们与员工的计算机更新过程。我知道我可以使用shutil将源复制到目标,但我想更进一步收集所有源目录,然后使用相同的目录路径将它们复制到目标硬盘驱动器。

例如: src = G:\ users \%specificuser%\ Documents dst = C:\ users \%specificuser%\ Documents

我不想每次都输入源和目的地。所以我想我首先需要知道这在Python中是否可行。如果是这样,我从哪里开始?

1 个答案:

答案 0 :(得分:1)

怎么样:

shutil.copytree(src, dst)

或者实现你自己的copytree,如果需要,它会遍历创建它们的目录(避免“目标目录必须不存在。”的问题,如评论中所指出的),单向同步: / p>

import os, os.path, shutil

src="G:\\TestCopy"
dst="D:\\TestCopy"

def copy_tree(srcpath, dstpath):
    print(srcpath)
    if not os.path.exists(dstpath):
        os.makedirs(dstpath)
    for candidate in os.listdir(srcpath):
        srccan = os.path.join(srcpath, candidate)
        dstcan = os.path.join(dstpath, candidate)
        if os.path.isdir(srccan):
            copy_tree(srccan, dstcan)
        else:
            shutil.copyfile(srccan, dstcan)

copy_tree(src, dst)

如果您想根据部分路径中的特定用户构建用户字符串,os.path.join擅长这样做:

specificuser = "fred"
src = os.path.join("G:\\users", specificuser, "Documents")
dst = os.path.join("D:\\users", specificuser, "Documents")
print(src)
print(dst)

输出:

G:\users\fred\Documents
D:\users\fred\Documents