比较两个gzip压缩文件的每四行

时间:2013-04-08 12:39:58

标签: python gzip

我有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)

2 个答案:

答案 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,以避免读取内存中的所有内容。