我是Python的新手,对于何时应该调用close感到困惑。
例如,请考虑这个example from the csv documentation。
import csv
with open('some.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
此任务结束时没有reader.close()。
Q>如何确定函数调用是否需要通过近距离调用?
答案 0 :(得分:4)
返回需要清理的资源的函数将提供解释该文档的文档。 csv.reader
不会打开文件,也不会创建可关闭的资源。 open
调用可以,但with
语句负责为您关闭它。
答案 1 :(得分:1)
您需要调用close的唯一时间是必须释放系统资源。一般来说,这仅适用于文件句柄。一般对象,例如csv阅读器,不必关闭。
答案 2 :(得分:1)
您提供的示例不需要关闭,因为打开的文件由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()