python同步两个文件夹下的内容


Posted in Python onAugust 29, 2019

本文实例为大家分享了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)

代码简单,但是不优雅,欢迎指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python进阶教程之循环对象
Aug 30 Python
python常见排序算法基础教程
Apr 13 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
python 返回列表中某个值的索引方法
Nov 07 Python
pandas.cut具体使用总结
Jun 24 Python
Python Pandas 箱线图的实现
Jul 23 Python
为什么说Python可以实现所有的算法
Oct 04 Python
Django中使用MySQL5.5的教程
Dec 18 Python
python 多进程队列数据处理详解
Dec 23 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
详解Python中的Lock和Rlock
Jan 26 Python
pytorch 计算Parameter和FLOP的操作
Mar 04 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 #Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 #Python
python rsync服务器之间文件夹同步脚本
Aug 29 #Python
python-tornado的接口用swagger进行包装的实例
Aug 29 #Python
Python csv模块使用方法代码实例
Aug 29 #Python
python datetime中strptime用法详解
Aug 29 #Python
使用OpenCV实现仿射变换—平移功能
Aug 29 #Python
You might like
PHP 5.3.0 安装分析心得
2009/08/07 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python实现处理管道的方法
2015/06/04 Python
Python缩进和冒号详解
2016/06/01 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python-for循环的内部机制
2020/06/12 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
岗位廉洁从业承诺书
2014/03/28 职场文书
大学班级学风建设方案
2014/05/01 职场文书
献爱心活动总结
2014/05/07 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
期末考试复习计划
2015/01/19 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技