read() 一次吃整份文件,内存直接爆。
用 with open 拿到句柄,for 循环按行迭代。
文件对象本身就是迭代器,不占额外内存。
要按块处理就写 yield 函数,边读边产出。
生成器只能走一遍,需要复用就重新建。
def read_lines(path):
with open(path, encoding='utf-8') as f:
for line in f: # 逐行迭代,不整体进内存
yield line.rstrip('\n')
for line in read_lines('big.log'):
if 'ERROR' in line:
print(line)
THE END






暂无评论内容