1.什么是difflib
这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块。
比较/etc/passwd 和 /tmp/passwd 这两个文件有那里不同
import difflib
file1 = '/etc/passwd'
file2 = '/tmp/passwd'
with open(file1) as f1, open(file2) as f2:
text1 = f1.readlines()
text2 = f2.readlines()
d = difflib.HtmlDiff()
with open("passwd.html", 'w') as f:
f.write(d.make_file(text1, text2))
2.difflib里面的案例
import difflib
# ['', '1 line', '2 line']
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. Beautifu 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)
# 1. 以字符串方式展示两个文本的不同, 效果如下:
d = difflib.Differ()
result = list(d.compare(text1, text2))
result = " ".join(result)
print(result)
"""
- 1. Beautiful is better than ugly.
? ^
+ 1. Beautifu is better than ugly.
? ^
2. Explicit is better than implicit.
3. Simple is better than complex.
4. Complex is better than complicated.
"""
# 2. 以html方式展示两个文本的不同, 浏览器打开:
d = difflib.HtmlDiff()
with open("passwd.html", 'w') as f:
f.write(d.make_file(text1, text2))