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中的startswith和endswith函数使用实例
Aug 25 Python
开始着手第一个Django项目
Jul 15 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python删除本地夹里重复文件的方法
Nov 19 Python
对Python中数组的几种使用方法总结
Jun 28 Python
Python使用gRPC传输协议教程
Oct 16 Python
Python检查ping终端的方法
Jan 26 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python中__slots__节约内存的具体做法
Jul 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.MVC的模板标签系统(二)
2006/09/05 PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
webpack打包单页面如何引用的js
2017/06/07 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
2018/07/06 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
用vue写一个日历
2020/11/02 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
python通过shutil实现快速文件复制的方法
2015/03/14 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
儿科护理实习自我鉴定
2013/09/19 职场文书
学年自我鉴定范文
2013/10/01 职场文书
QA工程师岗位职责
2013/11/20 职场文书
自荐书格式
2013/12/01 职场文书
法学专业求职信
2014/07/15 职场文书
不同意离婚上诉状
2015/05/23 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript