跳到内容

使用上下文管理器打开文件 (SIM115)

源自 flake8-simplify 代码检查器。

作用

检查未通过上下文管理器打开文件的情况(例如,使用内置的 open() 函数)。

为什么这不好?

如果打开文件时未使用上下文管理器,则无法保证文件将被关闭(例如,如果引发异常),这可能导致资源泄漏。 此规则检测可以使用上下文管理器的各种 IO 调用,例如 openpathlib.Path(...).open()tempfile.TemporaryFile()tarfile.TarFile(...).gzopen()

示例

file = open("foo.txt")
...
file.close()

建议改为

with open("foo.txt") as file:
    ...

参考