如何输出两个文本文件之间的差异?

4
我想知道如何比较两个文本文件,并突出显示它们之间的差异?例如:
文件1.txt
AAAAA
BBBBB
CCCCC

File2.txt

AAAAA
BBBBB

我希望在比较这两个文件后得到以下输出:
CCCCC

我正在使用Python,尝试了sed和grep,但没有成功(我也对Linux shell的做法感兴趣)。

这个问题比你想象的要复杂得多。有一些专门用于执行此任务的完整商业软件包 - Cory Kramer
嘿!讽刺有什么意义呢?我不是在寻找一个能做到这一点的软件 ;) 我是Python初学者,所以我尽可能多地学习。 - roger herbert
2
@rogerherbert 我不认为这是讽刺; 这不是一个微不足道的任务,如果你必须问从哪里开始,那么它可能超出了你目前的水平。 - jonrsharpe
1
@jonrsharpe 超出了我的当前水平?当然,但是询问你已经知道的东西是没有意义的,不是吗? - roger herbert
grep -Fxvf File2.txt File1.txt - Padraic Cunningham
显示剩余4条评论
3个回答

11

Python有一个专门用于此目的的库: difflib。您可以将两个文本文件的内容输入其中,它将返回两者之间的差异。

例如,请参见http://pymotw.com/2/difflib/


谢谢回答!但我已经尝试过了,它只给出了加减号,而不是我想要的。我只需要输出差异,不需要其他东西。 - roger herbert
2
我知道如何做,谢谢 :) 但可能有更直接的解决方案,也许可以使用shell命令。 - roger herbert

8

我在Python中使用了这个,它很简单,但是它能够工作。

>>> File1 = open("file1","r")
>>> File2 = open("file2","r")
>>> Dict1 = File1.readlines()
>>> Dict2 = File2.readlines()
>>> print Dict1
['AAAAA\n', 'BBBBB\n', 'CCCCC\n']
>>> print Dict2
['AAAAA\n', 'BBBBB\n']
>>> DF = [ x for x in Dict1 if x not in Dict2 ]
>>> print DF
['CCCCC\n']
>>> print DF[0]
CCCCC

>>> print DF[0].rstrip()
CCCCC

5
sort File1.txt File2.txt | uniq -u

很好,那也可以 :) - roger herbert
优雅。但是这行代码能在Python上运行吗?它看起来像是Linux Bash命令。 - guagay_wk
@user781486:这应该适用于任何支持管道的Shell。 - Cyrus

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