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

在Python函数中读取文件后如何正确关闭文件?

你的现有代码已经正确处理了文件关闭逻辑

你用到的with上下文管理器是Python官方推荐的文件操作最佳实践,它会自动帮你处理文件关闭的动作,完全不需要手动调用close()方法。

原理说明

with代码块的执行逻辑是:

  • 进入代码块时自动执行open()逻辑,返回文件对象赋值给file变量
  • 不管代码块是正常执行结束,还是中途抛出异常,甚至是碰到return提前跳出,退出with代码块时都会自动执行file.close()释放文件资源

你现在的写法里,with代码块在return之前就已经完成了退出动作,文件早就被安全关闭了,函数返回的只是你已经提取好的单词列表,不存在资源泄露的问题。

不用with的传统写法(仅作参考,更推荐你现在的写法)

如果你不用上下文管理器,就需要手动加try...finally保证哪怕执行出错也能关闭文件,写法更繁琐:

import re

def read_file(filename):
    # 手动打开文件
    file = open(filename, "r", encoding="utf-8")
    try:
        lines = file.readlines()
        words = []
        for line in lines:
            words += re.findall(r'\w+', line.lower())
        return words
    finally:
        # 必须手动写关闭逻辑,否则一旦读取过程出错就会导致文件一直被占用
        file.close()

函数场景的注意点

不管你用哪种写法,只要保证文件打开的逻辑和关闭的逻辑配对即可:

  • 用with的写法不需要操心配对问题,上下文管理器自动处理
  • 手动打开的情况,一定要保证不管函数走哪个分支退出,都能执行到close()方法

你的现有代码完全符合规范,不需要做任何修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:06:01