在Python中使用difflib比较两个.txt文件

24 投票
6 回答
89947 浏览
提问于 2025-04-15 12:10

我想比较两个文本文件,并输出在比较文件中第一个不匹配的字符串,但因为我刚接触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的文档。

撰写回答