On Jul 12, 4:46 pm, Billy Mays <no...@nohow.com> wrote: > I want to make a generator that will return lines from the tail of > /var/log/syslog if there are any
Err... I must have missed something, but python files are their own iterators. Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. pythonrc start pythonrc done >>> f = open("/var/log/syslog") >>> for line in f: ... print line ... (snip unintersting syslog stuff)) >, but my function is reopening the file > each call: How do you know, and how do you call your function ? > 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. If you want the generator to wait until new content is available, just remove the raise part - but you'll have a blocking call... Else, I don't see what behaviour you are expecting exactly. -- http://mail.python.org/mailman/listinfo/python-list