python 實現目錄下迭代copy

閒話少說,直接上菜:

#!/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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章