2015-09-07 107 views
0

我想知道是否有任何有效的方法来逐行比较两个大文件。逐行比较两个大文件

文件1

2 
3 
2 

文件2

2 | haha 
3 | hoho 
4 | hehe 

我只是把每个文件的第一个字符,对他们进行比较。目前我正在使用一个非常天真的方法在double for循环中遍历它们。

For i in file 1: 
    line number = 0 
    For j in file 2: 
     loop until line number == counter else add 1 to line number 
     Compare line 1 
    increase counter 

既读取文件到内存是不是一种选择。我在Linux上使用蟒蛇,但我开放给bash的解决方案和Python脚本解决方案

+1

所以,你想比较每行与*相同的行*从另一个文件? '拉链'他们! – jonrsharpe

+0

@Jornsharpe我无法压缩它们,因为我无法将它们加载到内存中 – aceminer

+0

如果你使用2.x,'itertools.izip'它们 – jonrsharpe

回答

2

什么是这样的:

diff <(cut -c 1 file1.txt) <(cut -c 1 file2.txt) 

diff是使用比较文件线的工具。您可以使用process substitution(匿名管道)比较仅包含第一个字符的每个文件的版本(使用cut)。

0

您可以压缩两个文件并将它们迭代在一起。

f1 = open('File 1') 
f2 = open('File 2') 

flag = True 

for file1_line, file2_line in zip(f1, f2): 
    if file1_line[0] != file2_line[0]: 
    flag = False 
    break 

print(flag)