2013-04-08 36 views
3

我有兩個gzip文件,每個大約1Gb。我想同時讀入兩個文件,並將每個文件的第四行相互比較。有沒有更快的方式,然後這樣做?比較兩個gzip文件的每四行

import gzip 

file1 = r"path\to\file1.gz" 
file2 = r"path\to\file2.gz" 


for idx, (line1, line2) in enumerate(zip(gzip.open(file1), gzip.open(file2)), start=1): 
    if not idx%4: 
     compare(line1, line2) 

回答

2

你仍然必須通過這兩個文件進行迭代,但這是清潔:

import gzip 
from itertools import islice, izip 

file1 = r"path\to\file1.gz" 
file2 = r"path\to\file2.gz" 

with gzip.open(file1) as f1, gzip.open(file2) as f2: 
    for line1, line2 in islice(izip(f1, f2)), 3, None, 4): 
     compare(line1, line2) 
2

您可以使用itertools.islice(iterable, 3, None, 4)每第四個項目迭代中iterable

如果您使用的是Python 2.x,請使用itertools.izip而不是zip以避免讀取內存中的所有內容。