我有2个gzip压缩文件,每个约1Gb。我想同时读取这两个文件,并将两个文件的每四行相互比较。有没有比这更快的方式呢?
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)
答案 0 :(得分: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)
答案 1 :(得分:2)
您可以使用itertools.islice(iterable, 3, None, 4)
来迭代iterable
中的每四个项目。
如果您使用的是Python 2.x,请使用itertools.izip
代替zip
,以避免读取内存中的所有内容。