我想比较python中的两个测试文件(实际上它们是Windows注册表文件(.reg),但它们都是文本)。 即时通讯寻找两个文件之间的所有差异,而不仅仅是第一个不同于第二个文件的第一行。 由于事先比较python中的两个文本文件
回答
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]]))
希望这有助于
如果你在f1中有一个额外的行,它会报告之后的每一行都是不同的。逐行比较只有在文件大部分相同时才有用,除了一些行内差异之外。 – 2012-04-17 23:20:18
我的问题就是你说的,我不希望发生这种情况。我只需要区别不只是如果第一行不匹配屏幕上的下一行打印作为不匹配的行。 – user1229351 2012-04-18 03:45:08
如果您需要做的仅仅是一次或两次,你可以考虑使用Gnu32Diff。如果您安装了OS X或Linux,则可以使用vimdiff(也称为vim -d,但如果您安装了vim,它还会安装vimdiff命令),这非常简单易用。
它应该是python script.not预编译工具 – user1229351 2012-04-18 05:32:54
看看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
- 1. Linux的比较两个文本文件
- 2. 比较python中的两个文本文件
- 3. 在Python中比较两个大文件
- 4. 比较两个文本文件
- 5. 比较两个文本文件相互
- 6. DUnit比较两个文本文件并显示比较
- 7. 比较两个文件与Python
- 8. 使用python比较两个文件3
- 9. Python比较两个csv文件
- 10. 比较两个文件行与python
- 11. 比较两个文本php
- 12. 比较两个文本框
- 13. 两个文件夹的文件比较
- 14. 如何比较python中两个不同文件中的两个图像文件
- 15. 使用shell脚本比较两个文件夹中的文件
- 16. AWK比较两个文件
- 17. 比较两个文件
- 18. 比较两个CSV文件,
- 19. 比较两个文件
- 20. Excel - 比较两个文件?
- 21. 比较两个文件
- 22. 比较两个文件
- 23. 比较两个文件
- 24. 比较两个excel文件
- 25. 两个大文本文件的高效文件比较
- 26. 将两个文件中的两个文件比较为一个脚本
- 27. 比较两个文件中的行
- 28. 比较Erlang中的两个文件
- 29. hdfs中的两个文件比较
- 30. 比较Unix中的两个文件
[difflib(HTTP://docs.python .org/library/difflib.html#module-difflib)可能很有趣 – mensi 2012-04-17 19:15:35