Python 使用difflib库 快速实现批量对比文件差异

本文介绍了如何使用Python的difflib库来批量对比文件差异,满足了批量对比、明确差异内容以及新增和删除文件的需求,适用于版本升级前后文件的检查。
摘要由CSDN通过智能技术生成

关注我们

本文内容仅供学习参考,不足错误之处,还请多多指正,如果喜欢我们,请关注我们,你的支持就是我们最大的动力。
在这里插入图片描述

需求来源

霍克是一名软件实施工程师,每次版本升级时,虽然会提供升级相关的清单,但不会详细说明具体的改动点。为了能够更有针对性地验证和测试系统,霍克希望对比版本升级前后的文件,了解升级前后版本的变动情况。这样他就能做到心中有数,上线时更有底气。在上线后出现问题时,也能更快速地定位问题。

此时小霍可以借助一些工具来显示对比,比如使用Beyond CompareNotepad++插件比对等,但是由于版本升级的文件众多,它们不能实现批量的文件对比,因此小霍同学,需要一个方案能实现如下需求:

  1. 批量对比版本升级前后的文件,包括代码、脚本和数据文件等。
  2. 对于相同文件(相同文件指同目录、同名,前后版本都存在)差异部分,能明确提示出增加、删除、修改的内容
  3. 能够对比出前后版本,新增了哪些文件、删除了哪些文件
  4. 支持对目录下所有文件进行对比,包括子文件夹

实现方案

通过查询发现,Python 中difflib模块,可以实现如上需求,该库为Python 标准库,无需安装。difflib模块主要用于对比文本之间的差异,并支持输出可读性比较强的HTML文档,基于difflib模块的开发逻辑如下:

  1. 通过glob模块获取两个目录下的所有文件列表,包括子文件夹
  2. 编写get_file_info()方法来对获取的文件列表进行处理
  3. 编写compare_file()方法来实现单个文件对比,核心代码为difflib模块的ndiff()方法,该方法用来比较两个字符串的内容并返回它们之间的差异
  4. 编写compare_file_batch方法来实现批量对比。

实现代码

# -*- coding: utf-8 -*-
"""
@author: MagicYang
@date: 20231117
@Tips: 关注朕大钱呀,微信公众号
@desc: 批量对比差异文件
"""
import glob, json, os, difflib
fr
开发背景:<br> 一日,在整理自己优盘时,发现里面有好多重复的文档等文件,就想把重复的文件删除,然而,有些文件内容是一摸一样的,但文件名称却不一样,人工来删除这些重复的文件必须得一个一个打开来看,并且有时还不能完全记住。所以就想编写一个软件来帮助清理重复的文件,于是,这个软件便诞生了。<br><br>开发思路:<br> 通过遍历指定目录下指定的文档类型,并对其进行比较,从文件大小和修改日期来判断,如果两项指标完全一样的话就被认为是内容相同的文件,进而列出来,供使用者多项选中后直接删除。<br><br>软件使用:<br> 1、选中想要清理的文件类型后,点击“查找”按钮,指定搜索目录,之后,程序将在指定目录下完成指定文件类型的搜索,并进行比较,列出内容相同的文件。<br> 2、使用者选定需要删除的文件,点击“删除”按钮,就可以将选定的重复文件进行删除(不可恢复)。<br> 3、如果被查找出来的重复文件比较多,一时不能删除完,可以将查找出的文件列表导出到搜索文件的目录下,暂时不支持导入功能。<br><br>几点说明:<br> 1、程序用VB6编写成,绿色软件,能运行于各个操作系统。<br> 2、由于程序需要比较大量的文件,需要占用大量的内存,所以,建议运行时关闭其他程序,如果运行时间过长的话(5分钟),可以尝试先从一些小的文件夹入手。<br> 3、这是以前编写的软件,结果在一次电脑重做系统时,源文件给丢了,暂时只有软件,如果有需要的话,我可以在写一个出来提供源码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑大钱呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值