python——difflib内置模块之文本对比

917次阅读
没有评论

文章目录

    • 一、difflib模块
      • 1、 对比文件生成差异结果文本
      • 2 、对比文件生成html格式的差异化比较页面
    • 二、Linux文件之间的对比

一、difflib模块

difflib为python的标准库模块,无需安装。作用是对比文本之间的差异。并且支持输出可读性比较强的HTML文档,与Linux下的diff 命令相似。
difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面。

1、 对比文件生成差异结果文本

生成的差异文本中的符号解释:
python——difflib内置模块之文本对比
1、先将文本内容按行分割

text1 = splitlines(keepends=True) # 将多行文本按行分隔,返回一个列表,保留行尾换行符 text2 = splitlines(keepends=False) # 将多行文本按行分隔,返回一个列表,不保留行尾换行符 splitlines()按照行分割 返回一个包含各行作为元素的列表 参数: keepends=True 保留换行符 keepends=False 不包含换行符

2 、生成差异结果文件

import difflib # 导入模块 d = difflib.Differ() # 生成差异对象 ##result = d.compare(text1,text2) # 使用差异对象比较两个文本列表,生成差异结果对象 print(''.join(list(d.compare(text1,text2))))生成的差异对象不能直接查看,需要转化成列表并连接成文本

python——difflib内置模块之文本对比
python——difflib内置模块之文本对比

2 、对比文件生成html格式的差异化比较页面

1、 先将文本内容按行分割 2 、生成差异结果文件 d = difflib.HtmlDiff() #生成差异对象 htmlContent = d.make_file(text1,text2) # 对比生成差异结果 将差异结果写入html文件中: with open('diff.html','w') as f: f.write(htmlContent)

import difflib

text1 = ''' 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)

text2 = ''' 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=True) d = difflib.HtmlDiff() htmlContent = d.make_file(text1,text2) with open('diff.html','w') as f: f.write(htmlContent)

python——difflib内置模块之文本对比
python——difflib内置模块之文本对比
python——difflib内置模块之文本对比

二、Linux文件之间的对比

首先将文件内容读取出来,然后按照上述方法进行处理即可:
比较 /etc/passwd1 和 /etc/passwd2 文件存在的差异。并生成 passwdDiff.html 文件。

import difflib filename1 = '/etc/passwd' filename2 = '/etc/passwd1' with open(filename1) as f1,open(filename2) as f2: content1 = f1.read().splitlines(keepends=True) content2 = f2.read().splitlines(keepends=True) d = difflib.HtmlDiff() htmlContent = d.make_file(content1,content2) with open('passwerDiff.html','w') as f: f.write(htmlContent)

python——difflib内置模块之文本对比
python——difflib内置模块之文本对比

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python基础教程2022-11-22发表,共计1785字。
新手QQ群:570568346,欢迎进群讨论 Python51学习