Python 打开文件并在一行中对该文件执行操作是否会关闭该文件?
打开一个文件,然后在同一行中对该文件执行操作,这样做安全吗 例如,如果我正在使用Python 打开文件并在一行中对该文件执行操作是否会关闭该文件?,python,file-io,contextmanager,Python,File Io,Contextmanager,打开一个文件,然后在同一行中对该文件执行操作,这样做安全吗 例如,如果我正在使用zipfile模块,并希望获取名为file\u list的zip中的文件列表,是否可以安全地执行以下操作: import zipfile import os zip_path = os.path(...) file_list = zipfile.ZipFile(zip_path).namelist() 当然,我知道这段代码可以安全地完成同样的任务,尽管只需两行代码: import zipfile import o
zipfile
模块,并希望获取名为file\u 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()
哪个更好?来自:
ZipFile.close()
关闭存档文件。您必须在退出程序之前调用close()
,否则将不会写入基本记录
一般来说,使用上下文管理器几乎总是更好的。人们认为它更整洁、更安全。
如果您使用一个线性,它不会创建一个ref,所以它应该被释放,然后关闭。但是您依赖于GC何时运行的实现细节,这不是最好的主意,您最好使用和
例如,使用上下文管理器总是更好。但除非你不想保证资源会被释放。是的,当对象被回收时,文件对象将自动关闭。。。但是如果有错误呢?您是否因为某些原因缺少可用的行?@juanpa.arrivillaga我只是想编写更易于阅读的代码-我一直在使用上下文管理器,但我的代码嵌套得非常深,因为我还必须在同一代码块中进行分支和循环。使用函数创建更易于阅读的代码。不要把东西塞进一行。
# ZipFile in zipfile.py
def __del__(self):
"""Call the "close()" method in case the user forgot."""
self.close()