You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用open('file.txt','r')读取文件会自动关闭文件吗?

关于未显式关闭的文件是否会自动释放的解答

核心结论

  • 在官方CPython解释器(绝大多数用户使用的Python版本)环境下,你写的这段代码执行完成后,打开的文件会被自动关闭
  • 该行为依赖CPython的特定垃圾回收实现,在PyPy、Jython等其他Python解释器中无法保证文件会被及时关闭,极端情况下会出现资源泄漏

背后的逻辑

CPython默认采用引用计数作为核心的垃圾回收机制:你的代码中open()返回的文件对象是临时对象,仅在sum的生成器表达式执行期间被持有引用,sum执行结束后该对象的引用计数归零,Python会自动调用文件对象的析构方法,内部会执行close()操作释放文件句柄。

而PyPy等解释器没有引用计数机制,仅靠周期性的垃圾扫描回收无用对象,无引用的文件对象需要等到扫描触发时才会被回收,文件句柄也才会被释放。

更规范的写法

不建议依赖解释器的垃圾回收逻辑处理文件关闭,更稳妥的方式是使用Python提供的上下文管理器with语法,它会在代码块执行结束后自动关闭文件,跨解释器兼容,也能规避异常场景下的资源泄漏问题。同时你的原代码不需要调用readlines(),直接迭代文件对象即可,大文件场景下内存占用更低:

with open('/path/ABC.txt', "r") as f:
    line_count = sum(1 for i in f if i.strip())

内容的提问来源于stack exchange,提问作者user16375592

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:54:03