reading file in for loop

Peter Otten __peter__ at web.de
Fri Sep 5 12:50:18 CEST 2014


loial wrote:

> If I read a file using a for loop, as follows, is the file left open if I
> execute a break in the for loop?
> 
> 
> for line in open(myFile).readlines():
> 
>     if something:
>         break

Whether the file is left open has nothing to do with how you leave the loop. 
The way you wrote it (readlines() reads all lines into a list and there is 
no reference to the file object left) CPython will close the file before you 
enter the loop:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for line in open("tmp.txt").readlines():
...     raw_input("you are here")
...     break
... 
you are here
[1]+  Angehalten              python
$ lsof *

Other implementations take a bit more time:

$ jython
"my" variable $jythonHome masks earlier declaration in same scope at 
/usr/bin/jython line 15.
Jython 2.5.3 (, Nov 21 2013, 23:15:42) 
[OpenJDK 64-Bit Server VM (Oracle Corporation)] on java1.7.0_65
Type "help", "copyright", "credits" or "license" for more information.
>>> for line in open("tmp.txt"): pass

... 
>>> 
[2]+  Angehalten              jython
$ lsof *
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    9396 xxxxx   34r   REG   8,23       17 5906455 tmp.txt
$ 





More information about the Python-list mailing list