python diff_Python 使用 difflib 模块比较两个文件异同并保存结果文件教程

Python 的 difflib 模块可以非常方便的比较两个文件的异同,并且支持将结果保存为 html 文件,html 文件中会高亮出两个文件不同的地方,非常方便。下面就简单记录下 difflib 用法。

一、difflib 介绍

difflib 是 Python 自带的一个模块,提供用于比较序列的类和函数,它可被用于比较文件,并可产生多种格式的不同文件差异信息,包括 HTML 和上下文以及统一的 diff 数据。

关于 difflib 的详细介绍可以参考 Python 官方文档:https://docs.python.org/zh-cn/3/library/difflib.html

二、difflib 实例代码

下面的代码只是 difflib 的一个用法:比较两个文件(本文中是 txt 格式),并保存为 HTML 文件)。

第一步、判断两个文件是否一样

def check_difference(file1, file2):

st1 = os.stat(file1)

st2 = os.stat(file2)

# 比较文件大小

if st1.st_size != st2.st_size:

return True

buff_size = 8 * 1024

with open(file1, 'rb') as fp1, open(file2, 'rb') as fp2:

while True:

b1 = fp1.read(buff_size) # 读取指定大小的数据进行比较

b2 = fp2.read(buff_size)

if b1 != b2:

return True

if not b1:

return False

第二步、使用 difflib 保存差异信息

比较 file1 和 file2,并将结果保存在 key_diff.html 中:

def compare_files(key, file_path1, file_path2):

out_put = key + '_diff.html'

with open(file_path1, 'r') as f1, open(file_path2, 'r') as f2:

l1 = f1.read().splitlines()

l2 = f2.readlines()

with open(os.path.join(FILE_DIR, out_put), 'w') as out_f:

html_diff = difflib.HtmlDiff()

diff_file = html_diff.make_file(l1, l2)

out_f.write(diff_file)

return out_put

结果 HTML 中会高亮两个文件的异同:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值