1. 将一个目录树完全复制到另外一个目录下面
import os, sys """ 复制目录树 """ maxloadsize = 1024 * 1024 def copyfile(frompath, topath, maxloadsize= maxloadsize): """ 单个文件的复制 :param frompath:原文件 :param topath: 复制到的文件 :param maxloadsize: 复制最大块 :return: """ fromfilename = os.path.split(frompath)[1] (dirpath,filename) = os.path.split(topath) if fromfilename != filename: topath = os.path.join(dirpath, fromfilename) print("changed copy file name:" + topath) if os.path.getsize(frompath) <= maxloadsize: with open(frompath, "rb") as fromfile: with open(topath, "wb") as tofile: bytes = fromfile.read(maxloadsize) tofile.write(bytes) else: with open(frompath, "rb") as fromfile: with open(topath, "wb") as tofile: while True: bytes = fromfile.read(maxloadsize) if not bytes:break tofile.write(bytes) def copytree(dirfrom, dirto, verbose = 0): if not os.path.isdir(dirto): os.mkdir(dirto) fount = tcount =0 for filename in os.listdir(dirfrom): pathfrom = os.path.join(dirfrom, filename) pathto = os.path.join(dirto, filename) if not os.path.isfile(pathfrom): # 目录循环copy try: os.mkdir(pathfrom) fc,tc = copytree(pathfrom, pathto) fount += fc tcount += tc except: print("Error copying from {0} to {1}".format(pathfrom, pathto)) else: # 文件直接copy try: print("copy from {0} to {1}".format(pathfrom, pathto)) copyfile(pathfrom, pathto) fount += 1 except: print("Error copying from {0} to {1}".format(pathfrom, pathto)) return (fount, tcount) if __name__ == '__main__': #copyfile("../testdir1/test1.pdf", "../testdir/testfdf.pdf") copytree("../lession6","../less")