Python 如何在linux中比较两个巨大的文本文件并得出差异

Python 如何在linux中比较两个巨大的文本文件并得出差异,python,shell,Python,Shell,我有两个文本文件,都大约有10亿行,但其中一个比另一个多218行,我需要找出218行并保存它们以供分析 最快的解决方案是什么?是否有任何神奇的shell命令或python库能够以最佳效率提供所需的结果 非常感谢。只需使用命令行工具diff: $ diff ./file1.txt ./file2.txt 只需使用命令行工具diff: $ diff ./file1.txt ./file2.txt 将产生比diff更可读的输出(加上它的输出更容易通过管道传输到其他对象),并且应该更高效: $ ca

我有两个文本文件,都大约有10亿行,但其中一个比另一个多218行,我需要找出218行并保存它们以供分析

最快的解决方案是什么?是否有任何神奇的shell命令或python库能够以最佳效率提供所需的结果


非常感谢。

只需使用命令行工具
diff

$ diff ./file1.txt ./file2.txt

只需使用命令行工具
diff

$ diff ./file1.txt ./file2.txt
将产生比diff更可读的输出(加上它的输出更容易通过管道传输到其他对象),并且应该更高效:

$ cat file1.txt         
dog
cat
rabbit
$ cat file2.txt
cat
dog
rabbit
llama
$ comm -13 <(sort file1.txt) <(sort file2.txt)
llama
$cat file1.txt
狗
猫
兔子
$cat file2.txt
猫
狗
兔子
美洲驼
$comm-13将产生比diff更可读的输出(加上它的输出更容易通过管道传输到其他内容),并且应该更高效:

$ cat file1.txt         
dog
cat
rabbit
$ cat file2.txt
cat
dog
rabbit
llama
$ comm -13 <(sort file1.txt) <(sort file2.txt)
llama
$cat file1.txt
狗
猫
兔子
$cat file2.txt
猫
狗
兔子
美洲驼

$comm-13只需运行命令即可获得两个文件(文件X和文件Y)的差异

或者,如果要将差异存储到其他文件(z),则运行命令

diff -U 0 x y >> z

只需运行命令即可获得两个文件(文件X和文件Y)的差异

或者,如果要将差异存储到其他文件(z),则运行命令

diff -U 0 x y >> z

两个文件中的行的顺序是否相同?不知道,不能这样假设。
diff
是最好的选择,它有一个
--speed large files
参数,可以更好地处理大文件。不过,您必须使用
sort
对两个文件进行排序。谢谢,您所说的
sort
是什么意思,按什么排序?对每个文件的行进行排序,以便它们可以是
diff
'd。两个文件中的行的顺序相同吗?不知道,不能这样假设。
diff
是您的最佳选择,它有一个
--speed large files
参数,可以更好地处理大型文件。您必须使用
sort
对两个文件进行排序。谢谢,您所说的
sort
是什么意思,按什么排序?对每个文件的行进行排序,以便它们可以是
diff
'd。谢谢。如前所述,这两个文件很大,在这种特殊情况下,diff可能无法工作。谢谢。如前所述,这两个文件很大,在这种特殊情况下,diff可能无法工作。