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中的死锁、可重入锁和互斥锁
Nov 05 Python
遗传算法之Python实现代码
Oct 10 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
tensorflow模型转ncnn的操作方式
May 25 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
Feb 19 Python
在pyCharm中下载第三方库的方法
Apr 18 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入门小知识
2008/03/24 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
vue mounted组件的使用
2018/06/18 Javascript
swiper实现异形轮播效果
2019/11/28 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
win7下python3.6安装配置方法图文教程
2018/07/31 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Python项目跨域问题解决方案
2020/06/22 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
Java基础知识面试要点
2016/07/29 面试题
数据库什么时候应该被重组
2012/11/02 面试题
英语自荐信范文
2013/12/11 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
投标担保书范文
2014/04/02 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
银行资信证明
2015/06/17 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript