How to write a file generator

Billy Mays noway at
Tue Jul 12 12:42:34 EDT 2011

On 07/12/2011 11:52 AM, Thomas Jollans wrote:
> On 07/12/2011 04:46 PM, Billy Mays wrote:
>> I want to make a generator that will return lines from the tail of
>> /var/log/syslog if there are any, but my function is reopening the file
>> each call:
>> def getLines():
>>      with open('/var/log/syslog', 'rb') as f:
>>          while True:
>>              line = f.readline()
>>              if line:
>>                  yield line
>>              else:
>>                  raise StopIteration
>> I know the problem lies with the StopIteration, but I'm not sure how to
>> tell the caller that there are no more lines for now.
>> --
>> Bill

That was actually the behavior I was trying to avoid.  If there is no 
data to be read, the call will hang.  That function is actually called 
by a webserver (from wsgiref) so it cannot hang indefinitely.


More information about the Python-list mailing list