我希望在Python中比较两个测试文件(实际上它们是Windows注册表文件(.reg),但它们都是文本文件)。我想找到两个文件之间的所有差异,而不仅仅是第一行与第二个文件不同的内容。谢谢!
f1 = open(filepath1)
f2 = open(filepath2)
lines = f2.readlines()
for i,line in enumerate(f1):
if line != lines[i]:
print "line", i, "is different:"
print '\t', line
print '\t', lines[i]
print "\t differences in positions:", ', '.join(map(str, [c for c in range(len(line)) if line[c]!= lines[i][c]]))
看一下http://docs.python.org/library/difflib.html
这是它的一个使用示例(虽然还有许多其他用例和输出格式):
>>> 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
如果您只需要执行一两次,可以考虑使用Gnu32Diff。如果您已经安装了OS X或Linux,则可以使用vimdiff(又名vim -d,但是如果您已安装vim,则也会安装vimdiff命令),这很简单易用。