我想在python中比较两个测试文件。(实际上它们是Windows注册表文件(.reg)但它们都是文本)。 即时寻找两个文件之间的所有差异,而不只是第二行与第二个文件不同。 提前谢谢
答案 0 :(得分:2)
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]]))
希望这有帮助
答案 1 :(得分:1)
查看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
答案 2 :(得分:0)
如果您只需要执行一次或两次,则可以考虑使用Gnu32Diff。如果你安装了OS X或Linux,你可以使用vimdiff(AKA vim -d,但如果安装了vim,它也会安装vimdiff命令),这非常简单易用。