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)

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

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

相关文章

  • 盘点提高 Python 代码效率的方法

    盘点提高 Python 代码效率的方法

    本人用 Python 快两年了,平时只是用它来写点小小的分析脚本,以方便快捷为主,也没怎么考虑代码效率问题。最近想给自己升升级,提高一下代码的档次。于是找了一堆效率相关的文章,做了些实验,总结一下。
    2014-07-07
  • Python中的面向对象编程详解(下)

    Python中的面向对象编程详解(下)

    这篇文章主要介绍了Python中的面向对象编程详解(下),本文讲解了继承、super关键字、重写、多重继承、类、实例和其他对象的内建函数、私有化等内容,需要的朋友可以参考下
    2015-04-04
  • 仅用50行Python代码实现一个简单的代理服务器

    仅用50行Python代码实现一个简单的代理服务器

    这篇文章主要介绍了仅用50行Python代码实现一个简单的代理服务器,利用最简单的client->proxy->forward原理在socket模块下编写,需要的朋友可以参考下
    2015-04-04
  • TensorFlow实现创建分类器

    TensorFlow实现创建分类器

    这篇文章主要为大家详细介绍了TensorFlow实现创建分类器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • pandas之分组groupby()的使用整理与总结

    pandas之分组groupby()的使用整理与总结

    这篇文章主要介绍了pandas之分组groupby()的使用整理与总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python实现简单的井字棋游戏(gui界面)

    python实现简单的井字棋游戏(gui界面)

    这篇文章主要介绍了python如何实现简单的井字棋游戏,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • Python list运算操作代码实例解析

    Python list运算操作代码实例解析

    这篇文章主要介绍了Python list运算操作代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • python 中 os.walk() 函数详解

    python 中 os.walk() 函数详解

    os.walk()是一种遍历目录数的函数,它以一种深度优先的策略(depth-first)访问指定的目录。这篇文章主要介绍了python 中 os.walk() 函数,需要的朋友可以参考下
    2021-11-11
  • python依赖安装两种常用方式

    python依赖安装两种常用方式

    这篇文章主要给大家介绍了关于python依赖安装两种常用方式的相关资料,python本身做为一门解释性语言,说它功能强大,是因为它有着丰富的模块或称之为依赖(包),需要的朋友可以参考下
    2023-10-10
  • Django 实现外键去除自动添加的后缀‘_id’

    Django 实现外键去除自动添加的后缀‘_id’

    今天小编就为大家分享一篇Django 实现外键去除自动添加的后缀‘_id’,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论