一 前言
因为项目测试需要对比多个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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




