python同步两个文件夹下的内容
更新时间:2019年08月29日 11:31:51 作者:迦蓝叶
这篇文章主要为大家详细介绍了python同步两个文件夹下的内容,包括子文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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);
#需要同步的文件夹路径,可以使用绝对路径,也可以使用相对路径
synchroPath1 = r'/home/xxx/image1'
synchroPath2 = r'/home/xxx/image2'
#同步方法
def synchro(synchroPath1,synchroPath2):
leftDiffList = filecmp.dircmp(synchroPath1,synchroPath2).left_only
rightDiffList = filecmp.dircmp(synchroPath1,synchroPath2).right_only
commondirsList =filecmp.dircmp(synchroPath1,synchroPath2).common_dirs
for item in leftDiffList:
copyPath = synchroPath1 + '/' + 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 rightDiffList:
copyPath = synchroPath2 + '/' + item
pastePath = synchroPath1 +'/' + 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 = synchroPath2 + '/' + item
pastePath = synchroPath1 +'/' + 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(synchroPath1,synchroPath2)
logging.debug('synchro run')
#阻塞方法,上一步执行结束后等待五秒
time.sleep(5)
代码简单,但是不优雅,欢迎指正。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
CentOS 6.5中安装Python 3.6.2的方法步骤
centos 6.5默认自带的python版本为2.6,而下面这篇文章主要给大家介绍了关于在CentOS 6.5中安装Python 3.6.2的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。2017-12-12
树莓派使用python-librtmp实现rtmp推流h264的方法
今天小编就为大家分享一篇树莓派使用python-librtmp实现rtmp推流h264的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-07-07


最新评论