Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python比较两个文件的差异

python比较两个文件的差异

作者头像
py3study
发布于 2020-01-07 09:17:03
发布于 2020-01-07 09:17:03
4.7K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

使用python脚本比较两个文件的差异内容并输出到html文档中,可以通过浏览器打开查看。

一、脚本使用

  1. 对比nginx配置文件的差异

 python python_diff_file.py -f1 web26.conf -f2 web103.conf

二、脚本内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
1.difflib的HtmlDiff类创建html表格用来展示文件差异,通过make_file方法
2.make_file方法使用
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
用来生成一个包含表格的html文件,其内容是用来展示差异。
fromlines和tolines,用于比较的内容,格式为字符串组成的列表
fromdesc和todesc,可选参数,对应的fromlines,tolines的差异化文件的标题,默认为空字符串
context 和 numlines,可选参数,context 为True时,只显示差异的上下文,为false,显示全文,numlines默认为5,
当context为True时,控制展示上下文的行数,当context为false,控制不同差异的高亮之间移动时“next”的开始位置
3.使用argparse传入两个需要对比的文件
"""
import difflib
import argparse
import sys

# 创建打开文件函数,并按换行符分割内容
def readfile(filename):
    try:
        with open(filename, 'r') as fileHandle:
            text = fileHandle.read().splitlines()
        return text
    except IOError as e:
        print("Read file Error:", e)
        sys.exit()

# 比较两个文件并输出到html文件中
def diff_file(filename1, filename2):
    text1_lines = readfile(filename1)
    text2_lines = readfile(filename2)
    d = difflib.HtmlDiff()
    # context=True时只显示差异的上下文,默认显示5行,由numlines参数控制,context=False显示全文,差异部分颜色高亮,默认为显示全文
    result = d.make_file(text1_lines, text2_lines, filename1, filename2, context=True)
    # 内容保存到result.html文件中
    with open('result.html', 'w') as resultfile:
        resultfile.write(result)
    # print(result)


if __name__ == '__main__':
    # 定义必须传入两个参数,使用格式-f1 filename1 -f2 filename
    parser = argparse.ArgumentParser(description="传入两个文件参数")
    parser.add_argument('-f1', action='store', dest='filename1', required=True)
    parser.add_argument('-f2', action='store', dest='filename2', required=True)
    given_args = parser.parse_args()
    filename1 = given_args.filename1
    filename2 = given_args.filename2
    diff_file(filename1, filename2)

三、对比结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx配置文件对比差异脚本(Python)
当我们维护多个Nginx配置文件时,时常会对比不通版本配置文件的差异,使运维人员更加清晰的了解不通版本迭代后的更新项,实现的思路是读取两个需对比的配置文件,再以换行符作为分隔符,调用difflib.HtmlDiff()生产HTML格式的差异文档。实现的代码如下:
子润先生
2021/07/12
5440
Python 自动化业务服务监控
使用diffie模块实现文件内容差异对比。dmib作为 Python的标准库模块, 无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与 Linux 下的dif命令相似。我们可以使用 diffie对比代码、配置文件的差别,在版本控制方面是非 常有用。 Python3.x或更高版本默认自带 diffie模块,无需额外安装。
王瑞MVP
2022/12/28
4430
Python文件对比
总结:思路很重要,这次文件对比的思路就是先把文件读出来,在进行对比。每天进步一点点。
py3study
2020/01/08
1.3K0
Python文件对比
python3 实现对比conf 文件差
用法: ./conf.py  nginx1.conf  nginx2.conf > diff.html conf.py #!/usr/bin/python import difflib import sys ####   Usage: compare_nginx.conf.py filename1 filename2 >diff.html try:     textfile1 = sys.argv[1]     textfile2 = sys.argv[2] except Exception as e:
py3study
2020/01/03
4210
Python | 对比文件内容差异
因为项目测试需要对比多个MySQL 实例的my.cnf文件中参数的差异。每次肉眼查找差异项比较麻烦。本文总结两种方式。
用户1278550
2021/10/18
2K0
Python | 对比文件内容差异
[Centos7]open读取文件报错:TypeError
本文编写于 205 天前,最后修改于 205 天前,其中某些信息可能已经过时。 在写对比文件差异的脚本时,运行脚本报错: TypeError: a bytes-like object is required, not ‘str’ 处理方法如下: 1.使用codecs模块 2.原代码为: fileHandle = open(filename, 'rb') #此写法用于python2.x版本,因为我的版本为python3.6,所以需要做以下更改 3.更改后的代码为 import codecs fileHandl
贰叁壹小窝
2020/07/22
1K0
Python 其他通用代码总结
封装钉钉通知接口: 接口的调用需要传入需要通知特定人的手机号,调用后会在顶顶群内通知.
王瑞MVP
2022/12/28
6480
比较两个相似 PDF 文件的内容差异
本文给出两个比较相似 PDF 文件内容差异的方法, 以 《Understanding DeepLearning (5 August 2024)》[1]和 《Understanding DeepLearning (28 August 2024)》[2]为例进行对比。
AlphaHinex
2024/09/29
2530
比较两个相似 PDF 文件的内容差异
Python-文件差异对比
1.import difflib text1 = 'hello a b' text2 = 'hello  b' text1_lines = text1.splitlines() text2_lines = text2.splitlines()
py3study
2020/01/06
1.4K0
Python-文件差异对比
python使用difflib对比文件示
使用difflib模块对比文件内容 1  示例:字符串差异对比  vim duibi.py #!/usr/bin/env python # -*- coding: utf-8 -*- import re import os import difflib tex1="""tex1: this is a test for difflib ,just try to get difference of the log 现在试试功能是否可行 好呀 goodtest 那么试试吧好人 """ tex1_lines=te
py3study
2020/01/06
1.4K0
python使用difflib对比文件示
python中的difflib
diff = d.compare(text1_lines, text2_lines)
py3study
2020/01/13
7730
python实现字符串差异对比方法
本篇介绍如何通过difflib模块实现文件内容差异对比。difflib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与Linux下的diff命令相似。我们可以使用difflib对比代码、配置文件的差别,在版本控制方面是非常有用。 Python 2.3或更高版本默认自带difflib模块,无需额外安装。
matinal
2023/10/13
4010
python爬取neuxs文件
&snap;&snap;公司neuxs仓库中maven-metadata 文件经常被删掉,导致开发中拉取不到依赖问题。刚开始怀疑是本地settings问题或者是neuxs有定时任务自动清理。为了验证这个问题,决定每天晚上和第二天早上拉取所有文件做下对比。
OPice
2021/04/01
1K0
python对比配置文件差异
try: tx1 = sys.argv[1] tx2 = sys.argv[2] except Exception as e: print "error" + str(e) print "usage: xx filename1 filename2" sys.exit()
py3study
2020/01/09
5760
『工作自动化』文件内容差异化对比辅助工具difflib
然后发现咱们python标准库difflib可以比较不错的实现这一需求,那么今天我们就简单介绍一下这个计算差异的辅助工具。
可以叫我才哥
2021/08/05
6130
119-比较文件的差异
python标准库提供了一个difflib,可以进行文件的比较,并且可以生成网页的形式。
凯茜的老爸
2018/10/10
8600
Python 文件操作
-1 表示使用缺省大小的buffer 。 如果是二进制模式,使用io.DEFAULT_BUEFER_SIZE值,默认是4096或者8192。如果是文本模式,如果是终端设备,是行缓存方式,如果不是,则使用二进制模式的策略。
江小白
2019/06/17
1K0
【小码匠自习室】让错误成为孩子进步的阶梯
碎碎念 今天梳理了这篇文章,同一个地方只能跌一次跟头,再重复错误肯定被老码农敲脑袋 梳理这篇文章源于3月份参加NOI Online测试赛没有全文比较输出文件内容,只是对比了几个值,导致爆零( ̄﹏ ̄;) 标题是老码农起的,心灵鸡汤太多了,以后想管他叫”唐鸡汤“了。(*^_^*) 准备测试文件 mode_ex1.ans 4 1 5 1 4 2 4 8 2 1 2 3 4 5 mode_ex1-2.ans 修改了第13行数据:4 -> 6 4 1 5 1 4 2 4 8 2 1 2 3 6 5 mode_ex
小码匠
2022/08/08
3880
Python 实用的小例子分享 1~3
本例子使用Python的os模块和 argparse模块,将工作目录work_dir下所有后缀名为old_ext的文件修改为后缀名为new_ext
double
2019/11/15
5040
Python 小工具 -实现简单文件对比
        历史遗留问题导致CMDB (配置管理数据库) 数据错误,内网机器200多台,逐一核对显然太不现实; (浪费人力);
py3study
2020/01/13
6440
相关推荐
Nginx配置文件对比差异脚本(Python)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验