直接 open()+readlines() 会爆内存,因为 readlines() 将整个文件一次性加载进内存,产生远超文件大小的字符串对象开销;应改用 for line in f: 或自定义带异常处理的生成器。为什么直接 open() + readlines() 会爆内存因为 readlines() 会把整个文件一次性加载进内存,哪怕只是想逐行处理。1GB 的日志文件,可能瞬间吃掉 2GB+ 内存——不是文件大小,是 Python 字符串对象的额外开销和换行符缓存导致的。真正要的是“按需取一行”,不是“全拿进来再切”。生成器 yield 正是干这个的:函数返回一个迭代器,每次只产出一行,上一行对象可被垃圾回收。别用 for line in f.readlines(): —— 它已经把全部行存在列表里了改用 for line in f:(底层就是基于迭代器,等价于手动 yield)如果需要预处理(比如跳过注释、拆字段),就封装成自定义生成器函数怎么写一个安全的逐行生成器(带编码和异常处理)文件编码不一致、中间出现坏字节、权限突然丢失……这些都会让裸 for line in f: 直接报错中断。生产环境必须兜底。关键点:用 try/except 包住单行读取逻辑,跳过出问题的行,而不是整个流程崩掉;显式指定 encoding,避免平台默认编码差异(比如 Windows 的 cp1252 vs Linux 的 utf-8)。立即学习“Python免费学习笔记(深入)”; 唱鸭 音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体
如何正确实现“破纪录次数统计”算法(高低分突破计数)