最近有個windows下批量更新文件的小需求,將一個目錄下的所有文件覆蓋到另一個目錄下,首先想到shutil模塊,shutil模塊主要用於文件夾的操作。其中copytree用來對目錄進行復制,但是比較遺憾的是,如果目標文件已經存在的話,該函數就會報錯拋異常了,非常的不給力..後面就直接用os.system調用了xcopy命令,生產環境上一跑,大部分機器是正常,某些機器會報"無效的參數數量"錯誤,繞了一圈還是自己寫了個簡單的copy函數..
# -*- coding=gbk -*- import os import shutil def copy3(src, dst): try: names = os.walk(src) for root, dirs, files in names: for i in files: srcname = os.path.join(root, i) dir = root.replace(src, '') dirname = dst + dir if os.path.exists(dirname): pass else: os.makedirs(dirname) dirfname = os.path.join(dirname, i) shutil.copy2(srcname, dirfname) except Exception, e: print e