3

我有 2 个 gzipped 文件,每个文件大约 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)
4

2 回答 2

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)
于 2013-04-08T12:47:29.927 回答
2

您可以使用itertools.islice(iterable, 3, None, 4)来遍历iterable.

如果您使用的是 Python 2.x,请使用itertools.izip而不是zip避免读取内存中的所有内容。

于 2013-04-08T12:48:27.447 回答