在Python中使用difflib比较两个.txt文件
我想比较两个文本文件,并输出在比较文件中第一个不匹配的字符串,但因为我刚接触Python,所以遇到了一些困难。有没有人能给我一个使用这个模块的示例呢?
当我尝试像这样做的时候:
result = difflib.SequenceMatcher(None, testFile, comparisonFile)
我收到一个错误,提示说'file'类型的对象没有长度。
6 个回答
5
你确定这两个文件都存在吗?
我刚刚测试了一下,结果非常好。
为了得到结果,我使用了类似下面的东西:
import difflib
diff=difflib.ndiff(open(testFile).readlines(), open(comparisonFile).readlines())
try:
while 1:
print diff.next(),
except:
pass
每一行的第一个字符表示它们是否不同:比如说,'+'表示下一行是新增的,等等。
10
这里有一个简单的例子,演示如何用Python的difflib来比较两个文件的内容...
import difflib
file1 = "myFile1.txt"
file2 = "myFile2.txt"
diff = difflib.ndiff(open(file1).readlines(),open(file2).readlines())
print ''.join(diff),
35
首先,你需要把字符串传给difflib.SequenceMatcher,而不是文件:
# Like so
difflib.SequenceMatcher(None, str1, str2)
# Or just read the files in
difflib.SequenceMatcher(None, file1.read(), file2.read())
这样就能解决你的错误了。
要获取第一个不匹配的字符串,可以查看difflib的文档。