我正在处理大文本文件(10 MB gziped)。总是有两个文件属于一起,长度和结构都相同:每个数据集有4行。从2个文件同时读取每4行
我需要同时从两个文件中处理来自第2行的每个块中的数据。
我的问题:什么是最节省时间的方法?
现在我这样做:
def read_groupwise(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return itertools.izip_longest(fillvalue=fillvalue, *args)
f1 = gzip.open(file1,"r")
f2 = gzip.open(file2,"r")
for (fline1,fline2,fline3,fline4), (rline1, rline2, rline3, rline4) in zip(read_groupwise(f1, 4), read_groupwise(f2, 4)):
# process fline2, rline2
但因为我只需要每2号线,我猜大概有是一个多比较有效的方式来做到这一点?
任何帮助表示赞赏! Lastalda
我已经试过了,但它并没有比以前更快。还是)感谢你的建议。 Sidequestion:与“f = open(file)”相比,使用“with open(file)as f ...”的好处是什么? – Lastalda 2013-02-25 09:56:00
更快并不是最重要的事情 - 可读性是更重要的问题。至于'with',它会在你退出with块的范围时关闭文件,并且在'try:... finally:...'块中这样做,这意味着即使有是一个例外。它更具可读性,摆脱'file.close()'混乱,确保文件在所有情况下都关闭,这通常是一个好主意。 – 2013-02-25 14:20:25