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

关注我们

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

需求来源

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

此时小霍可以借助一些工具来显示对比,比如使用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
from sr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

郑大钱呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值