我有一个巨大的.txt文件,其中包含约100m行,我想将其内容逐行保存到列表中。
我正在使用以下代码来实现这一目标:
tmp=[]
with open('xy.txt') as f:
for line in f:
tmp.append(line)
现在的问题是,在读取整个文件之前,这段代码不会释放内存,因此一段时间后它会耗尽内存。
我的问题是,有什么办法可以有效地完成任务记忆吗?
您可以定义一个生成器,逐行生成:
def gen():
with open('xy.txt') as fh:
yield from fh
如果只需要其中的特定部分,则可以itertools.islice
用来选择该切片:
import itertools as it
data = it.islice(gen(), 10**6, 10**7)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句