【发布时间】:2016-09-20 17:58:19
【问题描述】:
这个问题纯粹是出于好奇。在最近的一个问题 here 的讨论中提出,我经常想知道为什么当人们通过误解明确关闭文件时,上下文管理器 (with) 不会引发错误......然后我发现你即使不使用with,也可以在文件上多次调用close()而不会出错。
我们能找到与此相关的唯一内容是here,它只是温和地说(强调我的):
关闭( )
关闭文件。已关闭的文件无法再读取或写入。任何需要打开文件的操作都会在文件关闭后引发 ValueError。 允许多次调用 close()。
这似乎是有意为之,但是,如果您无法对已关闭的文件执行任何操作,那么我们就无法弄清楚为什么允许多次关闭文件。有用例吗?
【问题讨论】:
-
也许如果代码有点草率,并且在多个地方有
close(),而不是全程跟踪文件的状态……至少你的代码不会抛出异常。跨度> -
哈!你打败了我!我正在编写一个几乎相同的问题,只是看到这个问题作为一个相关问题弹出。我会赞成;)
-
@elethan 我正要在另一个线程中给你发消息:P
-
有时它使代码更容易一些。另外,如果你有一个实际的错误,你
close一个文件然后再次使用它其他操作已经触发异常。所以在那里触发它真的没有意义。
标签: python