比较python中的两个文本文件

时间:2012-04-17 19:01:45

标签: python file

我想在python中比较两个测试文件。(实际上它们是Windows注册表文件(.reg)但它们都是文本)。 即时寻找两个文件之间的所有差异,而不只是第二行与第二个文件不同。 提前谢谢

3 个答案:

答案 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命令),这非常简单易用。