python调用dircmp进行文件夹比较

  不同电脑上的同一部署文件,由于更新频率不相同导致两边内容有差异,需要比较两边的文件夹及文件差异。之前写过批量修改文件名的Python代码,因此优先想用python处理。
  百度“python 文件夹对比”,不少文章都是自己实现的文件夹对比(参考文献2-3),也有介绍使用filecmp模块的dircmp类进行文件夹对比。本文学习调用dircmp进行文件夹比较的基本用法。
  dircmp类使用比较简单,创建dircmp类对象后,直接调用对应属性获取关心的数据即可,主要用到的属性或方法如下:

序号属性或方法说明
1common_dirs两个文件夹当前目录中的相同子目录集合,与subdirs属性类似,后者是将common_dirs中的名称映射到 dircmp 实例
2diff_files两个文件夹当前目录中文件名相同但文件内容有差异的文件集合
3left_only两个文件夹当前目录中仅存在于前者文件夹内的文件及子文件夹
4right_only两个文件夹当前目录中仅存在于后者文件夹内的文件及子文件夹

  基于参考文献1最下方的示例代码,调整显示函数输出内容,调整后的代码如下所示(复制本地电脑中的python代码文件夹,调整其中的文件内容,用于文件夹对比测试):

# coding=gbk

import os
import filecmp

def print_diff_files(dcmp):
    for name in dcmp.left_only:
        print("左侧 %s 单独存在的文件或文件夹: %s" % (dcmp.left,name))

    for name in dcmp.right_only:
        print("右侧 %s 单独存在的文件或文件夹: %s" % (dcmp.right,name))
    
    for name in dcmp.diff_files:
        print("存在差异的文件: %s 位于 %s and %s" % (name, dcmp.left,
              dcmp.right))
    for sub_dcmp in dcmp.subdirs.values():
        print_diff_files(sub_dcmp)

dcmp = filecmp.dircmp('E:\MyPrograms\Python', 'E:\MyPrograms\PythonTest')
print_diff_files(dcmp)

print("done")

  程序运行效果如下所示:
在这里插入图片描述
  文件夹内容较少时使用上述方式够用,如果文件夹内的文件及子文件夹数量成千上万个,使用上述方式就不是很好看,后续还会继续寻找更友好的显示方式。

参考文献:
[1]https://docs.python.org/zh-cn/3.13/library/filecmp.html#filecmp.cmp
[2]https://blog.youkuaiyun.com/qq_37021523/article/details/140109743
[3]https://blog.youkuaiyun.com/weixin_45726033/article/details/137751019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值