2011-10-13 55 views

回答

4

返回需要清理的资源的函数将有解释这些的文档。 csv.reader不会打开文件,或以其他方式创建可关闭的资源。呼叫open会,但with声明负责为您关闭它。

1

您需要调用close的唯一时间是您必须释放系统资源的时间。这仅适用于文件句柄。一般对象,如csv阅读器,不必关闭。

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)已关闭。如果在这里的openclose之间出现问题,您仍然有一个打开的文件资源。

编辑: 的with是相同的,因为这:

import csv 
f = open('some.csv', 'rb') 
try: 
    reader = csv.reader(f) 
    for row in reader: 
     print row 
finally: 
    f.close() 
相关问题