我有一个巨大的.txt文件,包含大约100m行,我想将其内容逐行保存到列表中。
我正在使用以下代码实现这一目标:
tmp=[]
with open('xy.txt') as f:
for line in f:
tmp.append(line)
这是一个问题,该代码在读取整个文件之前不会释放内存,因此会在一段时间后耗尽内存。
我的问题是,有什么办法可以有效地完成此任务的记忆吗?
答案 0 :(得分:2)
您可以定义一个逐行生成的生成器:
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)