最近有个windows下批量更新文件的小需求,将一个目录下的所有文件覆盖到另一个目录下,首先想到shutil模块,shutil模块主要用于文件夹的操作。其中copytree用来对目录进行复制,但是比较遗憾的是,如果目标文件已经存在的话,该函数就会报错抛异常了,非常的不给力..后面就直接用os.system调用了xcopy命令,生产环境上一跑,大部分机器是正常,某些机器会报"无效的参数数量"错误,绕了一圈还是自己写了个简单的copy函数..
# -*- coding=gbk -*-
import os
import shutil
def copy3(src, dst):
try:
names = os.walk(src)
for root, dirs, files in names:
for i in files:
srcname = os.path.join(root, i)
dir = root.replace(src, '')
dirname = dst + dir
if os.path.exists(dirname):
pass
else:
os.makedirs(dirname)
dirfname = os.path.join(dirname, i)
shutil.copy2(srcname, dirfname)
except Exception, e:
print e