Warning about "for line in file:"
Just van Rossum
just at xs4all.nl
Mon Feb 18 05:33:07 EST 2002
Russell E. Owen wrote:
> I tried taking advantage of
> for line in file:
> (a recent addition to the language) and ran into some odd behavior.
>
> I read some lines using one for loop, to get to the start of the data of
> interest. E.g.:
> for line in file:
> if startingcondition(line):
> break
>
> I then some more lines from the same file using a similar for loop, but
> found that the lines were not contiguous! Instead there was a huge gap
> between the two sets of reads, as if the first for loop read in a lot of
> extra data that it never spit out.
>
> [ ... ]
It took me a while to understand what you meant, and the followups
didn't make it much clearer either... But now that I do, I'm just as
baffled as you are...
Here's what happens on my box:
>>> f = open("tmp.txt", "w")
>>> for i in range(10000):
... f.write("%s\n" % i)
...
>>> f.close()
>>>
>>> f = open("tmp.txt")
>>> for line in f:
... print line.strip()
... break
...
0
>>> for line in f:
... print line.strip()
... break
...
1861
>>>
This is highly unintuitive to me, indeed so much so that I would like to
call it a bug!
Just
More information about the Python-list
mailing list