我是Python新手,不知道什么时候应该调用close。
例如,考虑csv文档中的这个示例:
import csv
with open('some.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
在这个任务的末尾没有reader.close()。
Q>如何确定函数调用之后是否需要进行close call?
返回需要清理的资源的函数将具有解释这一点的文档。csv.reader
不打开文件,也不创建可关闭的资源。open
调用可以,但with
语句会为您关闭它。
唯一需要调用close的时候是必须释放系统资源的时候。总的来说,这只适用于文件句柄。一般对象,如csv阅读器,不需要关闭
您给出的示例不需要关闭,因为打开的文件是由with
处理的(类似于c#的using
)。
现在,如果你的例子是这样的,就会有一个close()
:
import csv
f = open('some.csv', 'rb')
reader = csv.reader(f)
for row in reader:
print row
f.close()
两者实际上是同一件事,但是with
负责处理运行期间的失败,以确保文件句柄(f
)关闭。如果这里的open
和close
之间存在问题,您仍然有一个打开的文件资源。
编辑:with
与此相同:
import csv
f = open('some.csv', 'rb')
try:
reader = csv.reader(f)
for row in reader:
print row
finally:
f.close()