大文件逐行处理,用生成器而不是一次读进内存

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
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容