当然,上面的方式看起来并不方便,所以我们使用此方法,可以更清晰地看出差异。
difflib.HtmlDiff()
可以用于创建一个完整HTML文件,该文件显示具有行间和行内更改突出的文本的逐行比较。
difflib.HtmlDiff().make_file(a.txt,b.txt)
比较两文件并返回一个字符串,该字符串是一个完整的HTML文件,其中包含一个表格,显示逐行差异,突出显示行间和行内更改。
difflib.HtmlDiff().make_table()
比较两文件并返回一个字符串,该字符串是一个完整的HTML表格,显示逐行差异,突出显示行间和行内更改。
import difflib
a = '''
1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
'''.splitlines(keepends=True)
b = '''
1. Beautiful is better than ugly.
3. Simple is better than complex.
4. Complicated is better than complex.
5. Flat is better than nested.
'''.splitlines(keepends=False)
htmlContent = difflib.HtmlDiff().make_file(a,b)
with open('diff.html','w+') as f:
f.write(htmlContent)
import difflib
a = '''
1. Beautiful is better than ugly.
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
'''.splitlines(keepends=True)
b = '''
1. Beautiful is better than ugly.
3. Simple is better than complex.
4. Complicated is better than complex.
5. Flat is better than nested.
'''.splitlines(keepends=False)
htmlContent = difflib.HtmlDiff().make_table(a,b)
with open('diff.html','w+') as f:
f.write(htmlContent)
结果:

对比之下,还是difflib.HtmlDiff().make_file()
更好用一些。
我正在使用difflib.HtmlDiff类,但使用两组文本(来自网站的HTML)调用该函数,但是当它创建表时html_diff = difflib.HtmlDiff()print html_diff.make_table(previous_contents, fetch_url.page_contents)但是,这似乎只是按字符比较字符(每个表行1个字符),最后我得到了一个4.3MB的txt文件...
difflib模块
difflib为python的标准库模块,无需安装。作用时对比文本之间的差异。并且支持输出可读性比较强的HTML文档,与Linux下的diff 命令相似。
difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面,
1、对比文件生成差异结果文本
生成的差异文本中的符号解释:
应用场景:配置文件由于升级改动了,我们想看看升级后的配置文件相对于之前的改动了哪些配置项
注意:这个脚本只能检测的配置文件是键值对的形式,就是key=value的形式
我在网上找了好久没找到这一块的案例,大部分都是用一些difflib库做的可视化对比,所以自己尝试写了一个
# 该脚本实现两个配置文件中,新文件相对于旧文件的增删改的配置项输出功能
# 配置文件必须是key = value的形式
import re
import sys
def data2list(file_stream):
:param file_stream:接收打开的文件对象
:return
你的位置:技术文档-> Python-> 文档详情Python的difflib模块HtmlDiff今天看了下difflib下有个HtmlDiff,看了帮助结果不行,几经周折原来是需要三个参数(HtmlDiff(), text1, text2),写下来以备忘记:text1=[' 1. Beautiful is b...
现在网上有很多好用的在线文本diff工具,个人也经常使用,但最近头疼的发现,在线diff有个很明显的短板就是不支持超大文本数据的diff,比如我的数据多达到15万行。在线diff工具基本复制过去就卡死了。不过还好,有python,以下几句代码就解决了我的问题
#!/usr/bin/python
#coding=utf8
import difflib
f = open("gxte.jso...
我使用pythons difflib包来检测维基百科文章修订版的更改。在调试我的脚本时,我发现一些错误只有在使用difflib.Differ().compare()什么时候difflib.HtmlDiff().make_file()显然正确地检测到了变化。不幸的是,我无法将这个问题分解为比实际文本更简单的例子:#!/usr/bin/python3import requestsimport diff...
difflib 库是 Python 标准库中的一个模块,它提供了用于比较并求出两个序列之间的差异的功能。HtmlDiff 类是 difflib 库中的一个类,它可以生成 HTML 格式的差异内容。
使用 HtmlDiff 类生成 HTML 格式的差异内容的方法如下:
首先,需要导入 difflib 库,例如:import difflib
Difflib作为python的标准库,无需安装,作用是对比文本之间的差异,而且支持输出可读性比较强的HTML文档。
在Linux下,可以直接使用vimdiff命令比对文本,例如对a.txt与b.txt的差异,命令: vimdiff a.txt b.txt 即可。
常见的函数介绍:
HtmlDiff()...
在软件开发里,常常需要比较不同版本的代码,因为开发人员在一个月,或者一年之后,发现代码已经更改了,但会忘记更改那里了,怎么办呢?就会拿当前的版本代码与一年之前的版本代码进行比较,这时就会找到差异的地方。又或者当一个作家正在写一篇文章时,已经写了好几十万字,某一天忘记锁屏电脑了,给一个熊儿子不小心打入一个字,并且已经保存到电脑里。这时作家要把这个字找出来,怎么办呢?一个字一个字地去比对,那是多么麻烦
difflib_text.py#!/usr/bin/pythonimport difflibimport systry:textfile1=sys.argv[1]textfile2=sys.argv[2]except Exception,e:print "Error:"+str(e)print "Usage: difflib_text.py filename1 filename2"sys.exit...
# -*- coding: utf-8 -*-
from pprint import pprint
from difflib import Differ, SequenceMatcher, HtmlDiff
def diff_compare(in_lines1: list, in_lines2: lis...
RD部署时的配置文件需要保证前一个版本和后一个版本不一致,否则会产生丢数据的问题。鉴于此,每次提测后QA需要对2个版本的产出物进行对比。linux中有diff命令可以对两个文件进行比较,但是需要登录到linux开发机,比较麻烦。python中自带的difflib也可以实现类似的功能,而且比较的结果能保存为html格式的文件,使用起来更直观,而且可以根据自己的需要在不同的平台上使用。
常用方法简介
先用dir查看该模块中有哪些可以的类或者方法
difflib模块最常用的2个类就是Dif...