导入错误:没有difflib_data模块。

5

我正在使用Windows 7上的Python 3.4。尝试比较两个文本文件,并希望使用difflib报告它们之间的差异。 以下是我使用的代码:

import difflib
from difflib_data import *

with open("s1.txt") as f, open("s2.txt") as g:
    flines = f.readlines()
    glines = g.readlines()

d = difflib.Differ()
diff = d.compare(flines, glines)
print("\n".join(diff))

错误回溯: from difflib_data import * ImportError: 没有名为"difflib_data"的模块

如何解决这个错误...谢谢


2
difflib_data 不是标准的 Python 文件/模块。可能你从某个地方复制了这段代码(?)实际上,即使你删除 from difflib_data import * 导入行,代码仍然可以运行。 - sk11
2个回答

3

根据以下文章,似乎这是PyMOTW教程中提供的示例数据。

我假设作者希望您将测试数据源代码复制并粘贴到一个名为difflib_data.py的新文件中,并将其保存到您的工作目录。

请将下面的行复制到difflib_data.py文件中。

text1 = """Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integereu lacus accumsan arcu fermentum euismod. Donec pulvinar porttitortellus. Aliquam venenatis. Donec facilisis pharetra tortor. In necmauris eget magna consequat convallis. Nam sed sem vitae odiopellentesque interdum. Sed consequat viverra nisl. Suspendisse arcumetus, blandit quis, rhoncus ac, pharetra eget, velit. Maurisurna. Morbi nonummy molestie orci. Praesent nisi elit, fringilla ac,suscipit non, tristique vel, mauris. Curabitur vel lorem id nisl portaadipiscing. Suspendisse eu lectus. In nunc. Duis vulputate tristiqueenim. Donec quis lectus a justo imperdiet tempus."""

text1_lines = text1.splitlines()

text2 = """Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integereu lacus accumsan arcu fermentum euismod. Donec pulvinar porttitortellus. Aliquam venenatis. Donec facilisis pharetra tortor. In necmauris eget magna consequat convallis. Nam sed sem vitae odiopellentesque interdum. Sed consequat viverra nisl. Suspendisse arcumetus, blandit quis, rhoncus ac, pharetra eget, velit. Maurisurna. Morbi nonummy molestie orci. Praesent nisi elit, fringilla ac,suscipit non, tristique vel, mauris. Curabitur vel lorem id nisl portaadipiscing. Suspendisse eu lectus. In nunc. Duis vulputate tristiqueenim. Donec quis lectus a justo imperdiet tempus."""

text2_lines = text2.splitlines()

谢谢@Rishi Dua....它只是打印出文件的全部内容...找不到它们之间的区别... - Maxxie
每一行都必须以-、+、?等符号为前缀,以标记差异。 - Rishi Dua
是的,在另一行的开头有一个“+”...但我如何将仅这些“+”行复制到另一个文本文件中呢? - Maxxie
如果你只想要包含 + 的行,那么你需要解析存储在“diff”中的值。行前缀为 - 表示它们在第一个序列中,但不在第二个序列中。行前缀为 + 表示它们在第二个序列中,但不在第一个序列中。 - Rishi Dua

0
要摆脱异常"没有模块difflib_data",请移除from difflib_data import *并替换
diff = d.compare(flines, glines)
print("\n".join(diff))

使用以下代码:
diff = difflib.ndiff(text1_lines, text2_lines)
print('\n'.join(list(diff)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接