当前位置: 首页 > news >正文

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=gbkimport os
import filecmpdef 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.csdn.net/qq_37021523/article/details/140109743
[3]https://blog.csdn.net/weixin_45726033/article/details/137751019

http://www.lryc.cn/news/461573.html

相关文章:

  • 微信小程序 - 供应链系统设计
  • 嵌入式学习-IO进程-Day03
  • docker安装elasticsearch和ik分词器
  • |智能门票|008_django基于Python的智能门票设计与实现2024_i16z2v70
  • QFramework v1.0 使用指南 更新篇:20240919. 新增 BindableDictionary
  • vue实现文件预览和文件上传、下载、预览——多图、模型、dwg图纸、文档(word、excel、ppt、pdf)
  • 探讨人工智能领域所需学习的高等数学知识及其应用场景,涵盖了微积分、线性代数、概率论等多个数学分支。
  • 详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信
  • 服务器数据恢复—raid5阵列中多块硬盘离线导致崩溃的数据恢复案例
  • 《深度学习》OpenCV FisherFaces算法人脸识别 原理及案例解析
  • 基于Python+Flask的天气预报数据可视化分析系统(源码+文档)
  • 深入解析 Flutter兼容鸿蒙next全体生态的横竖屏适配与多屏协作兼容架构
  • 【Spring】Spring实现加法计算器和用户登录
  • 电脑d盘不见了怎么恢复?
  • 电子商务网站维护技巧:保持WordPress、主题和插件的更新
  • 交叉编译--目标平台aarch64 ubuntu 22.04
  • 【pytorch】昇思大模型配置python的conda版本
  • nodejs的卸载和nvm安装
  • 网络七层架构
  • 2024年华为OD机试真题-敏感字段加密-Java-OD统一考试(E卷)
  • 图神经网络黑书笔记--术语
  • 原型基于颜色的图像检索与MATLAB
  • 【C++笔试强训】如何成为算法糕手Day9
  • 初识算法 · 二分查找(1)
  • 数据结构:数字统计
  • 网页前端开发之HTML入门
  • Python do while 实现案例
  • docker网络管理详解 一
  • 前端使用Canvas实现网页电子签名(撤销、下载)
  • Lepus安装与配置管理(Lepus Installation and Configuration Management)