我正在尝试在工作中创建一个脚本,允许我们输入一堆目录路径,然后递归地将这些目录复制到新计算机。这是我们与员工的计算机更新过程。我知道我可以使用shutil将源复制到目标,但我想更进一步收集所有源目录,然后使用相同的目录路径将它们复制到目标硬盘驱动器。
例如: src = G:\ users \%specificuser%\ Documents dst = C:\ users \%specificuser%\ Documents
我不想每次都输入源和目的地。所以我想我首先需要知道这在Python中是否可行。如果是这样,我从哪里开始?
答案 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