gpt4 book ai didi

python - 明确关闭文件重要吗?

转载 作者:行者123 更新时间:2023-11-28 18:57:49 25 4
gpt4 key购买 nike

在 Python 中,如果您打开文件而不调用 close(),或者关闭文件但不使用 try-finally 或"with"语句,这是一个问题吗?还是仅依靠 Python 垃圾收集来关闭所有文件作为编码实践就足够了?例如,如果有人这样做:

for line in open("filename"):
# ... do stuff ...

...这是一个问题,因为文件永远无法关闭并且可能会发生阻止它关闭的异常?或者它肯定会因为文件超出范围而在 for 语句结束时关闭吗?

最佳答案

在您的示例中,不能保证在解释器退出之前关闭文件。在当前版本的 CPython 中,文件将在 for 循环结束时关闭,因为 CPython 使用引用计数作为其主要的垃圾收集机制,但这是一个实现细节,而不是该语言的一个特性。不保证其他 Python 实现以这种方式工作。例如 IronPython、PyPy 和 Jython 不使用引用计数,因此不会在循环结束时关闭文件。

依赖 CPython 的垃圾回收实现是一种不好的做法,因为它会降低您的代码的可移植性。如果您使用 CPython,您可能没有资源泄漏,但如果您切换到不使用引用计数的 Python 实现,您将需要检查所有代码并确保所有文件都正确关闭。

对于您的示例使用:

with open("filename") as f:
for line in f:
# ... do stuff ...

关于python - 明确关闭文件重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com