python - 打开文件并在一行中对该文件执行操作是否会关闭该文件?

标签 python file-io contextmanager

打开文件并随后在同一行中对该文件执行操作是否安全,而无需随后关闭文件?

例如,如果我使用 zipfile 模块并希望获取名为 file_list 的 zip 内的文件列表,执行以下操作是否安全:

import zipfile
import os
zip_path = os.path(...)

file_list = zipfile.ZipFile(zip_path).namelist()

当然,我知道这段代码可以安全地完成同样的事情,尽管只需要两行:

import zipfile
import os
zip_path = os.path(...)

with zipfile.ZipFile(zip_path) as my_zip:
    file_list = my_zip.namelist()

哪个更好?

最佳答案

来自 docs :

ZipFile.close()

Close the archive file. You must call close() before exiting your program or essential records will not be written.

一般来说,使用上下文管理器几乎总是更好。它被认为更整洁、更安全。

关于python - 打开文件并在一行中对该文件执行操作是否会关闭该文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144670/

相关文章:

python - 如何在python脚本的if条件下避免硬编码

python - 在 Gephi 中打开之前在 Networkx write_graphml 中添加属性

python - 在Python中,如何在不更改命名空间的情况下以宏样式将一个文件包含(而不是导入)另一个文件中?

java - 内存不足错误

python - python 中具有列表理解的嵌套上下文管理器

python - 如何使用 SQLAlchemy contextmanager 并仍然获得行 ID?

python - 一行与多行的 boolean 比较

python - Python 的 open() 是否读取未刷新的缓冲区?

php - 我能否以编程方式强制对文件的更改传播到所有 NFS 客户端?

python - 我们如何改变当前的 __main__