# Python copytree 代码defcopytree(src, dst, symlinks=False):
names = os.listdir(src)
os.makedirs(dst)
errors =[]for name in names:
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)try:if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks)else:
copy2(srcname, dstname)# XXX What about devices, sockets etc.?except OSError as why:
errors.append((srcname, dstname,str(why)))# catch the Error from the recursive copytree so that we can# continue with other filesexcept Error as err:
errors.extend(err.args[0])try:
copystat(src, dst)except OSError as why:# can't copy file access times on Windowsif why.winerror isNone:
errors.extend((src, dst,str(why)))if errors:raise Error(errors)