Possible File iteration bug
Billy Mays
noway at nohow.com
Thu Jul 14 16:15:42 EDT 2011
On 07/14/2011 04:00 PM, Ian Kelly wrote:
> On Thu, Jul 14, 2011 at 1:46 PM, Billy Mays<noway at nohow.com> wrote:
>> def getLines(f):
>> lines = []
>> for line in f:
>> lines.append(line)
>> return lines
>>
>> with open('/var/log/syslog', 'rb') as f:
>> lines = getLines(f)
>> # do some processing with lines
>> # /var/log/syslog gets updated in the mean time
>>
>> # always returns an empty list, even though f has more data
>> lines = getLines(f)
>>
>>
>>
>>
>> I found a workaround by adding f.seek(0,1) directly before the last
>> getLines() call, but is this the expected behavior? Calling f.tell() right
>> after the first getLines() call shows that it isn't reset back to 0. Is
>> this correct or a bug?
>
> This is expected. Part of the iterator protocol is that once an
> iterator raises StopIteration, it should continue to raise
> StopIteration on subsequent next() calls.
Is there any way to just create a new generator that clears its `closed`
status?
--
Bill
More information about the Python-list
mailing list