前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | 对比文件内容差异

Python | 对比文件内容差异

作者头像
用户1278550
发布2021-10-18 15:47:59
1.8K0
发布2021-10-18 15:47:59
举报
文章被收录于专栏:idbaidba

一 前言

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

二 实践

2.1 vimdiff

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

vimdiff file1 file2

2.2 利用 python difflib 模块
代码语言:javascript
复制
#!coding=utf-8
import sys
import difflib
import argparse


def 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)
代码语言:javascript
复制

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

三 小结

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 前言
  • 二 实践
    • 2.1 vimdiff
      • 2.2 利用 python difflib 模块
        • 三 小结
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档