python同步两个文件夹下的内容
作者:迦蓝叶 发布时间:2022-09-14 13:54:13
标签: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)
代码简单,但是不优雅,欢迎指正。
来源:https://blog.csdn.net/soslinken/article/details/48263157
0
投稿
猜你喜欢
- 上文:栅格:从混乱到秩序Jacci Howard Bear 的英文原文:http://desktoppub.about.com/od/gri
- 在当今用户的显示器越来越大的今天,之前的1024*768固宽布局有点越来越不合时宜,对大屏幕的用户而言,两侧空空的留白给人第一眼的印象是严重
- 这个技巧将教你如何用css做出漂亮的文本按钮,有活力的按钮将节省你很多制作图片的时间,也能让你一天的工作中成为一个快乐的人,让我们一起看看效
- 安装selenium打开命令控制符输入:pip install -U selenium火狐浏览器安装firebug:www.firebug.
- django处理Ajax跨域访问使用javascript进行ajax访问的时候,出现如下错误出错原因:javascript处于安全考虑,不允
- 本文实例讲述了python定时器(Timer)用法。分享给大家供大家参考。具体如下:# encoding: UTF-8import thre
- 1、工作流程步骤(1)用spawn来执行一个程序;(2)用expect方法来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的;
- 一、下载安装包http://www.php.net/downloads.php获取下载地址wgethttp://hk1.php.net/di
- 看到这个标题,你我可能都笑了。你会笑,因为你以为这个东西太小儿科了,还用得着做一个标题?!我会笑,是因为我确信你看完后会改变你的想法。首先我
- 在windows下写bat的时候,通过pause命令,可以暂停程序运行,例如经常见的程序会在终端提示”按任意键继续……”,用户在终端回车后程
- 数据库优化是一项很复杂的工作,因为这最终需要对系统优化的很好理解才行。尽管对系统或应用系统的了解不多的情况下优化效果还不错,但是如果想优化的
- ASP与MySQL的连接ASP和MySQL连接目前有两种方法:一种方法是使用MySQLX之类的组件,不过这种连接方法需要支付一定的费用;另外
- 本文实例讲述了PHP global全局变量的使用与注意事项。分享给大家供大家参考,具体如下:使用global在方法里面声明外部变量为全局变量
- 作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明:函数内定义的变量称为局部变量
- php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用
- 之前自己也遇到过一次,这段时间在群里也遇到过几次的一个问题用python2.7写的一段程序,里面用到了字典推导式,但是服务器版本是pytho
- 用习惯列表解析之后会觉得超级酷,所以在尝试使用列表解析,把循环什么的写在一行里面。使用if的时候什么时候必须要有else,什么时候可以没有e
- asp之家注:本文介绍了使用asp来获取access数据库中的一条随机记录的方法,简单实用,相信对初学者有所帮助,根据这个方法其实我们可以实
- 本文实例讲述了Python常用字符串替换函数strip、replace及sub用法。分享给大家供大家参考,具体如下:今天在做一道今年秋季招聘
- 在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。对常见的针对表