在一行中倾倒泡菜时仍然需要file.close()吗?

hel*_*ndy 2 pickle python-2.7

我目前像这样倾倒泡菜:

f = open("objectname.p","w")

pickle.dump(objectname,f)

f.close()
Run Code Online (Sandbox Code Playgroud)

但是,为了在我的文本编辑器中编写简洁的代码段,我想将内容保持在一行。我很想:

pickle.dump(objectname,open("objectname.p","w"))
Run Code Online (Sandbox Code Playgroud)

我的问题是,我仍然需要f.close()文件对象吗?如果是这样,怎么办?(请注意,我没有将变量分配给我打开的文件对象)。

赞成的原因:f.close()存在

否原因的原因:objectname = pickle.load(open("objectname.p","r"))建议按照如下方法来加载pickle对象,如pickle python文档中所述

在此处输入图片说明

没有与此匹配的“问题”和“文件”都匹配的相关问题。鉴于我的词汇量有限,我无法搜索解决方案

Sim*_*ser 5

酸洗与文件的打开和关闭无关。它仅说明文件内容。因此,在您的一线文件中,文件是打开的,但没有关闭。

因此,最好这样做:

with open("objectname.p","w") as f:
    pickle.dump(objectname, f)
Run Code Online (Sandbox Code Playgroud)

这与with语句一起使用,可确保在代码块的末尾f.close()自动调用它。您正在使用Python 2.7,并且该Python版本支持该功能。