difflib文件对比
‘+’ 包含在第二个系列行中,但不包含第一个
‘-’ 包含在第一个系列行中,但不包含第二个
’ ’ 两个系列行一致
‘?’ 存在增量差异
‘^’ 存在差异字符
import difflib
text1 = '''
1.Beautiful is beer than ugly.
2.Explicit better than implicit.
3.Simple is better han complex.
4.Complex is better than compl cated.
'''.splitlines(keepends=False) #splitlines按行分隔,keepends=False不保留换行符 True 保留换行符
# print(text1)
text2 = '''
1.Explicit is better than implicit.
2.Simple is bette r than complex.
3.Complex is bette r than complicated.
4.Flat is betdjkfhjewhewter than nested.
'''.splitlines(keepends=True)
# print(text2)
d = difflib.Differ()
print(''.join(d.compare(text1,text2)))
执行结果:
将对比写入网页文件中:
import difflib
text1 = '''
1.Beautiful is beer than ugly.
2.Explicit better than implicit.
3.Simple is better han complex.
4.Complex is better than compl cated.
'''.splitlines(keepends=False) #splitlines按行分隔,keepends=False不保留换行符 True 保留换行符
# print(text1)
text2 = '''
1.Explicit is better than implicit.
2.Simple is bette r than complex.
3.Complex is bette r than complicated.
4.Flat is betdjkfhjewhewter than nested.
'''.splitlines(keepends=True)
# print(text2)
d = difflib.HtmlDiff()
htmlContent = d.make_file(text1,text2)
with open('diff.html','w') as f:
f.write(htmlContent) #将不同写入网页文档中
执行结果:
Linux系统文件对比
import difflib
filename1 = '/hello/passwd'
filename2 = '/hello/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('passwdDiff.html','w') as f:
f.write(htmlContent)