根据我的理解,
with open(...) as x:
一旦with
语句完成,应该关闭文件。但是,现在我看到了
with closing(open(...)) as x:
在一个地方,环顾四周并想出,closing
应该在完成with
声明后关闭文件。
那么,关闭文件和closing
文件之间的区别是什么?
答案 0 :(得分:16)
假设contextlib.closing
和标准内置open
,closing
在这里是多余的。它是一个包装器,允许您对具有with
方法的对象使用close
语句,但不支持将其用作上下文管理器。由于open
返回的文件对象是上下文管理器,因此不需要closing
。