【发布时间】:2019-02-25 13:07:03
【问题描述】:
我有一个中等大小的文件(25MB,1000000 行),我想读取除每第三行之外的每一行。
第一个问题:将整个文件加载到内存中然后读取行(方法.read())是否更快,或者一次加载并读取一行(方法.readline()) ?
由于我不是经验丰富的编码员,我尝试了第二个选项,使用 itertools 模块中的 islice 方法。
import intertools
with open(input_file) as inp:
inp_atomtype = itertools.islice(inp, 0, 40, 3)
inp_atomdata = itertools.islice(inp, 1, 40, 3)
for atomtype, atomdata in itertools.zip_longest(inp_atomtype, inp_atomdata):
print(atomtype + atomdata)
虽然循环通过单个生成器(inp_atomtype 或 inp_atomdata)打印正确的数据,但同时循环通过它们(如在此代码中)打印错误的数据。
第二个问题:如何使用生成器到达所需的行?
【问题讨论】:
-
听起来像是 x y 问题,你想解决什么问题?
-
根据
atomtype的值我要正确对待atomdata变量。
标签: python generator itertools