在Python中使用difflib比较两个.txt文件
我想比较两个文本文件,并输出比较文件中的第一个string不匹配,但有困难,因为我是非常新的python。 任何人都可以给我一个样本来使用这个模块。
当我尝试像这样的东西:
result = difflib.SequenceMatcher(None, testFile, comparisonFile)
我得到一个错误,说'文件'types的对象没有len。
对于初学者,你需要传递stringdifflib.SequenceMatcher,而不是文件:
# Like so difflib.SequenceMatcher(None, str1, str2) # Or just read the files in difflib.SequenceMatcher(None, file1.read(), file2.read())
无论如何,这将解决你的错误。 为了得到第一个不匹配的string,我会指导你进入difflib文档的美妙世界。
下面是使用Python difflib比较两个文件内容的一个简单例子。
import difflib file1 = "myFile1.txt" file2 = "myFile2.txt" diff = difflib.ndiff(open(file1).readlines(),open(file2).readlines()) print ''.join(diff),
你确定两个文件都存在吗?
只是testing它,我得到了一个完美的结果。
为了得到结果,我使用类似于:
import difflib diff=difflib.ndiff(open(testFile).readlines(), open(comparisonFile).readlines()) try: while 1: print diff.next(), except: pass
每行的第一个字符表示它们是否不同:例如:'+'表示添加了以下行,等等。
听起来你可能根本不需要difflib。 如果你逐行比较,请尝试如下所示:
test_lines = open("test.txt").readlines() correct_lines = open("correct.txt").readlines() for test, correct in zip(test_lines, correct_lines): if test != correct: print "Oh no! Expected %r; got %r." % (correct, test) break else: len_diff = len(test_lines) - len(correct_lines) if len_diff > 0: print "Test file had too much data." elif len_diff < 0: print "Test file had too little data." else: print "Everything was correct!"