End of file

Peter Otten __peter__ at web.de
Thu Oct 7 05:16:54 EDT 2004


Kat wrote:

> How do you identify the last line of a file? I am in a "for" loop and
> need to know which is the last line of the file while it is being read
> in this loop.

You might consider moving the special treatment of the last line out of the
for-loop. In that case the following class would be useful. After iterating
over all but the last line you can look up its value in the 'last'
attribute.

import cStringIO as stringio

class AllButLast:
    def __init__(self, iterable):
        self.iterable = iterable
    def __iter__(self):
        it = iter(self.iterable)
        prev = it.next()
        for item in it:
            yield prev
            prev = item
        self.last = prev

def demo(iterable):
    abl = AllButLast(iterable)
    for item in abl:
        print "ITEM", repr(item)
    try:
        abl.last
    except AttributeError:
        print "NO ITEMS"
    else:
        print "LAST", repr(abl.last)
                    
        
if __name__ == "__main__":
    for s in [
        "alpha\nbeta\ngamma",
        "alpha\nbeta\ngamma\n",
        "alpha",
        "",
    ]:
        print "---"
        demo(stringio.StringIO(s))
   
Peter




More information about the Python-list mailing list