在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了。
还好同事点拨了下,用yield方法,测试了下果然毫无压力。咎其原因,原来是readlines是把文本内容全部放于内存中,而yield则是类似于生成器。
代码如下:
def open_txt(file_name):
with open(file_name,'r+') as f:
line = f.readline()
while line:
yield line.strip()
line = f.readline()
调用实例:
for text in open_txt('aa.txt'):
print text