【问题标题】:Does solitary open() leave the file handle open? [duplicate]solitary open() 是否使文件句柄保持打开状态? [复制]
【发布时间】:2018-11-04 23:10:36
【问题描述】:

在没有将其分配给变量的情况下单次调用 open() 是否会在执行完成后关闭文件句柄?

import json
_keyfile = json.load(open("s3_key.json", "r"))

如果调用 .read() 会怎样?

import json
_keyfile = json.loads(open("s3_key.json", "r").read())

【问题讨论】:

  • 未指定。对于 CPython,它通常会在不再需要时立即关闭,其他实现可能会在以后执行此操作,或者操作系统会在应用程序终止时执行此操作。对read() 的调用在这里通常无关紧要。

标签: python python-3.x


【解决方案1】:

根据python docs,文件保持打开状态,直到您在文件对象上调用close()垃圾收集器启动并为您关闭它。

因此,在读取文件时更喜欢使用上下文管理器(即with 语句),因为它们会为您关闭文件。

import json
with open("s3_key.json", "r") as f:
    _keyfile = json.load(f)
# f is now closed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多