2015-09-07 151 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)