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

Pythondifflib 模块可以非常方便的比较两个文件的异同,并且支持将结果保存为 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 中会高亮两个文件的异同:

Python difflib 教程

赞(0)
关注我们
未经允许不得转载:老王博客 » Python 使用 difflib 模块比较两个文件异同并保存结果文件教程

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址