我需要读入并处理一堆〜40mb gzip文本文件,并且我需要它快速完成并且I/O开销最小(因为其他人也使用这些卷)。我这样找到了这个任务,最快的方式是这样的: def gziplines(fname):
f = Popen(['zcat', fname], stdout=PIPE)
for line in f.stdout:
yield line
然后: for
如果我的gz文件不存在,为什么不这样做呢? $ cat test.pl
open(FILE, "zcat dummy.gz |") or die "DIE";
$ ./test.pl
zcat: dummy.gz: No such file or directory
如果我读文件通常,它按预期工作: $ cat test2.pl
open(FILE, "dummy.gz") o