Will file be closed automatically in a "for ... in open..." statement?

Chris Angelico rosuav at gmail.com
Tue Feb 16 23:36:53 EST 2016

On Wed, Feb 17, 2016 at 3:04 PM,  <jfong at ms4.hinet.net> wrote:
> Thanks for these detailed explanation. Both statements will close file automatically sooner or later and, when considering the exceptions, "with" is better. Hope my understanding is right.
> But, just curious, how do you know the "for" will do it? I can't find any document about it from every sources I know. Very depressed:-(

It's not the 'for' loop that does it. The for loop is kinda like this:

_temp = open("foo.txt")
_temp.read() # do stuff, do stuff
_temp = None

When you stop holding onto an object, Python can get rid of it. When
that happens is not promised, though - and if you have a reference
loop, it might hang around for a long time. But when a file object is
disposed of, the underlying file will get closed.


More information about the Python-list mailing list