时间:2021-05-22
difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面,如果需要比较目录的不同,可以使用filecmp模块。
class difflib.SequenceMatcher
此类提供了比较任意可哈希类型序列对方法。此方法将寻找没有包含‘垃圾'元素的最大连续匹配序列。
通过对算法的复杂度比较,它由于原始的完形匹配算法,在最坏情况下有n的平方次运算,在最好情况下,具有线性的效率。
它具有自动垃圾启发式,可以将重复超过片段1%或者重复200次的字符作为垃圾来处理。可以通过将autojunk设置为false关闭该功能。
class difflib.Differ
此类比较的是文本行的差异并且产生适合人类阅读的差异结果或者增量结果,结果中各部分的表示如下:
class difflib.HtmlDiff
此类可以被用来创建HTML表格 (或者说包含表格的html文件) ,两边对应展示或者行对行的展示比对差异结果。
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
以上两个方法都可以用来生成包含一个内容为比对结果的表格的html文件,并且部分内容会高亮显示。
difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
比较a与b(字符串列表),并且返回一个差异文本行的生成器
示例:
difflib.get_close_matches(word, possibilities[, n][, cutoff])
返回最大匹配结果的列表
示例:
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])['apple', 'ape']>>> import keyword>>> get_close_matches('wheel', keyword.kwlist)['while']>>> get_close_matches('apple', keyword.kwlist)[]>>> get_close_matches('accept', keyword.kwlist)['except']difflib.ndiff(a, b[, linejunk][, charjunk])
比较a与b(字符串列表),返回一个Differ-style 的差异结果
示例:
difflib.restore(sequence, which)
返回一个由两个比对序列产生的结果
示例
>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1),... 'ore\ntree\nemu\n'.splitlines(1))>>> diff = list(diff) # materialize the generated delta into a list>>> print ''.join(restore(diff, 1)),onetwothree>>> print ''.join(restore(diff, 2)),oretreeemudifflib.unified_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
比较a与b(字符串列表),返回一个unified diff格式的差异结果.
示例:
>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']>>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'):... sys.stdout.write(line) --- before.py+++ after.py@@ -1,4 +1,4 @@-bacon-eggs-ham+python+eggy+hamster guido实际应用示例
比对两个文件,然后生成一个展示差异结果的HTML文件
#coding:utf-8'''file:difflibeg.pydate:2017/9/9 10:33author:lockeyemail:lockey@123.comdesc:diffle module learning and practising '''import difflibhd = difflib.HtmlDiff()loads = ''with open('G:/python/note/day09/0907code/hostinfo/cpu.py','r') as load: loads = load.readlines() load.close()mems = ''with open('G:/python/note/day09/0907code/hostinfo/mem.py', 'r') as mem: mems = mem.readlines() mem.close()with open('htmlout.html','a+') as fo: fo.write(hd.make_file(loads,mems)) fo.close()运行结果:
生成的html文件比对结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
模块:difflib安装:Python版本大于等于2.3系统自带功能:对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux中的diff命令比
Python标准库itertools模块介绍itertools是python内置的模块,使用简单且功能强大,这里尝试汇总整理下,并提供简单应用示例;如果还不能满
python在不同层级目录import模块的方法使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。
程序中经常需要使用excel文件,批量读取文件中的数据python读取excel文件可以使用xlrd模块pipinstallxlrd安装模块示例:#coding
使用win32com模块开发windowActiveX的示例:(如果你还没有装win32com模块的话,请到http://python.net/crew/ski