代码:import osimport shutilfrom shutil import Errorfrom shutil import copystatfrom shutil import copy2src = "" #需要复制的文件目录dst = "" #目标目录def jiecptree(src, dst, symlinks=False, ignore=None): #声明函数 copyree( 要复制的目录,目标目录,复制符号连接内容到新目录,没有要忽略文件) names = os.listdir(src) #获得要复制目录的文件名列表,赋给变量 names if ignore is not None: #如果 ignore 不是None值 ignored_names = ignore(src, names) # src目录中要忽略文件的名字赋给 ignored_names else: # 否则 ignored_names = set() #ignore_name 被 不重复空元素集 赋值 if os.path.isdir(dst): pass else: os.makedirs(dst)# print"dstfirst:"+dst errors = [] #声明 errors列 for name in names: #将names里的元素循环复制给name if name in ignored_names: #如果name在要求被忽略的列里出现 continue #继续for循环(跳回for,从新循环下个元素) srcname = os.path.join(src, name) #将路径名(src)添加到文名(name)之前然后赋值给 srcname dstname = os.path.join(dst, name) #将路径名(dst)添加到文名(name)之前然后赋值给 dstcname from shutil import Error# print "name:"+name# print "src:"+src# print "dst:"+dst try: #尝试 if os.path.islink(srcname): continue elif os.path.isdir(srcname): #如果srcname路径是存在 jiecptree(srcname, dstname, symlinks, ignore) elif os.path.isdir(dstname): os.remove(dstname) copy2(srcname, dstname) else: # 否则 copy2(srcname, dstname) # 复制srcname到dstname# print "srcname:"+srcname# print "dstname:"+dstname # XXX What about devices, sockets etc.? #怎样装置 except (IOError, os.error), why: #除(IOError[与文件有关的异常],操作系统异常)外,返回原因 errors.append((srcname, dstname, str(why))) # 向errors列里添加,(要复制的目录,目标目录,错误原因) # catch the Error from the recursive jiecptree so that we can 从递归复制中捕捉这个错误,以便于我们能继续复制其他文件 # continue with other files except Error, err: #除错误外,返回错误: errors.extend(err.args[0]) #扩展 errors 列,添加(err.args[0] 元素) try: #尝试 copystat(src, dst) # 从src复制权限位,上次访问时间,最后修改时间 到 dst, except WindowsError: # 除 Windows错误 外: # can't copy file access times on Windows 在Windows上无法复制文件访问时间 pass # 通过(不作任何处理) except OSError, why: # 除 操作系统错误 外,返回原因: errors.extend((src, dst, str(why))) #扩展 errors 列,添加(要复制的目录,目标目录,错误原因) if errors: # 如果错误 raise Error(errors) # 提示错误更多相关内容可参考资料http://www.viiboo.cn