暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python | 对比文件内容差异

yangyidba 2021-09-30
1254

一 前言

因为项目测试需要对比多个MySQL 实例的my.cnf文件中参数的差异。每次肉眼查找差异项比较麻烦。本文总结两种方式。

二 实践

2.1 vimdiff

vimdiff 工具比较直接非常简单。

vimdiff file1 file2

2.2 利用 python difflib 模块

#!coding=utf-8import sysimport difflibimport argparsedef read_file(file_name):    try:        file_handle = open(file_name, 'r')        text = file_handle.read().splitlines()        file_handle.close()        return text    except IOError as error:        print('Read file Error: {0}'.format(error))        sys.exit()def compare_file(file1_name, file2_name):    if file1_name == "" or file2_name == "":        sys.exit()    text1_lines = read_file(file1_name)    text2_lines = read_file(file2_name)    diff = difflib.HtmlDiff()    result = diff.make_file(text1_lines, text2_lines)    try:        with open('result.html', 'w') as result_file:            result_file.write(result)    except IOError as error:        print('写入html文件错误:{0}'.format(error))        if __name__ == "__main__":    parser = argparse.ArgumentParser(description='compare_mycnf.py -s file1 -d file2 ')    parser.add_argument('-s', dest='source_file', type=str, help='源文件')    parser.add_argument('-d', dest='dest_file', type=str, help='目标文件')    args = parser.parse_args()    if not args.source_file or not args.dest_file:        print("源文件或者目标文件为空")        parser.usage()    source_file = args.source_file    dest_file = args.dest_file    compare_file(source_file, dest_file)

在浏览器中打开 result.html 文件的结果如下图展示。

三 小结

目前只能做到两个文件直接对比,如果需要对比多个文件的还得再想想如何对比或者展示差异化的值。

祝大家 国庆节 假期愉快 ^_^

文章转载自yangyidba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论