The reader is really just a parser. When you ask it for a line of data, it delegates the reading action to the underlying file
object and just converts the result into a set of fields. The reader itself doesn't manage any resources that would need to be cleaned up when you're done using it, so there's no need to close it; it'd be a meaningless operation.
You should make sure to close the underlying file
object, though, because that does manage a resource (an open file descriptor) that needs to be cleaned up. Here's the way to do that:
with open('/home/rv/ncbi-blast-2.2.23+/db/output.blast') as f:
z = csv.reader(f, delimiter='')
# do whatever you need to with z
If you're not familiar with the with
statement, it's roughly equivalent to enclosing its contents in a try...finally
block that closes the file in the finally
part.
Hopefully this doesn't matter (and if it does, you really need to update to a newer version of Python), but the with
statement was introduced in Python 2.5, and in that version you would have needed a __future__
import to enable it. If you were working with an even older version of Python, you would have had to do the closing yourself using try...finally
.
Thanks to Jared for pointing out compatibility issues with the with
statement.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…