3

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

4

3 回答 3

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]]))

希望这可以帮助

于 2012-04-17T19:04:59.583 回答
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
于 2012-04-17T22:56:08.833 回答
0

如果您只需要执行一次或两次,则可以考虑使用Gnu32Diff。如果您安装了 OS X 或 Linux,您可以使用 vimdiff(也称为 vim -d,但如果您安装了 vim,它也会安装 vimdiff 命令),它非常简单易用。

于 2012-04-17T22:24:18.307 回答