閒話少說,直接上菜:
#!/usr/bin/env python # -*-coding=utf8 import os import time sourceDir='/usr/local/src/test1' targetDir='/usr/local/src/test2' copyFileCounts=0 def copyFiles(sourceDir,targetDir): global copyFileCounts print sourceDir print u"%s當前處理文件夾%s已處理%s個文件"%(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),sourceDir,copyFileCounts) for f in os.listdir(sourceDir): sourceF=os.path.join(sourceDir,f) print sourceF targetF=os.path.join(targetDir,f) print targetF if os.path.isfile(sourceF): #創建目錄 if not os.path.exists(targetDir): os.makedirs(targetDir) copyFileCounts += 1 #文件不存在,或者存在但是大小不一樣,覆蓋 if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))): #2進制文件 open(targetF,"wb").write(open(sourceF,"rb").read()) print u"%s%s複製完畢"%(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),targetF) else: print u"%s%s已存在,不重複複製"%(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),targetF) if os.path.isdir(sourceF): copyFiles(sourceF,targetF) if __name__=="__main__": try: import psyco psyco.profile() except ImportError: pass copyFiles(sourceDir,targetDir)
判斷文件是否相同可以改爲對比MD5