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

Python中with语句与直接声明变量操作文件的区别及使用疑问

Python文件操作:with语句 vs 直接open的区别

两段代码的核心区别

  • 使用with语句的代码:依托Python的上下文管理器机制,不管代码块是正常执行完毕还是中途抛出异常,都会自动关闭文件句柄,及时释放系统资源。
  • 不使用with语句的代码:仅完成了文件打开和内容读取,但没有主动关闭文件。文件句柄只能依赖Python的垃圾回收机制被动释放,这个释放时机完全不确定,很容易造成资源占用问题。

能不能一直用代码2?

不推荐一直这么用,主要有两个关键问题:

  1. 资源泄漏风险:如果频繁用这种方式操作文件且不手动关闭,操作系统的文件描述符会被快速耗尽,后续再打开文件时可能抛出Too many open files的错误,甚至影响其他程序的正常运行。
  2. 异常场景下的资源未释放:如果在read()之后、手动关闭文件之前的代码抛出异常,关闭文件的语句根本不会执行,文件会一直处于打开状态,持续占用资源。

就算你手动加上close(),比如:

new_file = open('myfile.txt')
contents = new_file.read()
new_file.close()

也不如with语句可靠——一旦中间代码出问题,close操作就会被跳过。而with语句能100%保证文件被关闭,不用你额外操心资源管理。

虽然代码2看起来更直观,但Python官方明确推荐用with语句处理文件这类需要手动释放的资源,既安全又省心,是更规范的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49