您好,登錄后才能下訂單哦!
本文實例為大家分享了python同步兩個文件夾下的內容,供大家參考,具體內容如下
import os import shutil import time import logging import filecmp #日志文件配置 log_filename ='synchro.log' #日志輸出格式化 log_format = '%(filename)s [%(asctime)s] [%(levelname)s] %(message)s' logging.basicConfig(format=log_format,datefmt='%Y-%m-%d %H:%M:%S %p',level=logging.DEBUG) #日志輸出到日志文件 fileLogger = logging.getLogger('fileLogger') fh = logging.FileHandler(log_filename) fh.setLevel(logging.INFO) fileLogger.addHandler(fh); #需要同步的文件夾路徑,可以使用絕對路徑,也可以使用相對路徑 synchroPath2 = r'/home/xxx/image1' synchroPath3 = r'/home/xxx/image2' #同步方法 def synchro(synchroPath2,synchroPath3): leftDiffList = filecmp.dircmp(synchroPath2,synchroPath3).left_only rightDiffList = filecmp.dircmp(synchroPath2,synchroPath3).right_only commondirsList =filecmp.dircmp(synchroPath2,synchroPath3).common_dirs for item in leftDiffList: copyPath = synchroPath2 + '/' + item pastePath = synchroPath3 + '/' + item if(os.path.isdir(copyPath)): copyDir(copyPath,pastePath) else : shutil.copy2(copyPath,pastePath) fileLogger.info('copy '+copyPath +" to "+pastePath) for item in rightDiffList: copyPath = synchroPath3 + '/' + item pastePath = synchroPath2 +'/' + item if(os.path.isdir(copyPath)): copyDir(copyPath,pastePath) else : shutil.copy2(copyPath,pastePath) fileLogger.info('copy '+copyPath +" to "+pastePath) for item in commondirsList: copyPath = synchroPath3 + '/' + item pastePath = synchroPath2 +'/' + item syncDir(copyPath,pastePath) #拷貝文件夾,如果文件夾不存在創建之后直接拷貝全部,如果文件夾已存在那么就同步文件夾 def copyDir(copyPath,pastePath): if(os.path.exists(pastePath)): synchro(copyPath,pastePath) else : os.mkdir(pastePath) shutil.copytree(copyPath,pastePath) #子文件夾左右兩側文件夾都包含,就同步兩側子文件夾 def syncDir(copyPath,pastePath): copyDir(copyPath,pastePath) copyDir(pastePath,copyPath) while(True): synchro(synchroPath2,synchroPath3) logging.debug('synchro run') #阻塞方法,上一步執行結束后等待五秒 time.sleep(5)
代碼簡單,但是不優雅,歡迎指正。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。