End of file

Andreas Kostyrka andreas at kostyrka.org
Thu Oct 7 08:30:03 EDT 2004


On Thu, Oct 07, 2004 at 01:38:43PM +0200, Alex Martelli wrote:
> duikboot <"adijkstra at baanders NOSPAM consultancy.nl"> wrote:
> 
> > Kat wrote:
> > > Hi ,
> > > 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.
> > > 
> > > Thanks
> > > Kat
> > 
> > f = open("test.txt").readlines()
> > lines = len(f)
> > print lines
> > counter = 1
> > for line in f:
> >      if counter == lines:
> >          print "last line: %s" % line
> >      counter += 1
> 
> A slight variation on this idea is using the enumerate built-in rather
> than maintaining the counter by hand.  enumerate counts from 0, so:
> 
> for counter, line in enumerate(f):
>     if counter == lines-1: is_last_line(line)
>     else: is_ordinary_line(line)
> 
> If the file's possibly too big to read comfortably in memory, of course,
> other suggestions based on generators &c are preferable.
This should do it "right":

f = file("/etc/passwd")
fi = iter(f)

def inext(i):
    try:
        return i.next()
    except StopIteration:
        return StopIteration

next = inext(fi)
while next <> StopIteration:
    line = next
    next = inext(fi)
    if next == StopIteration:
        print "LAST USER", line.rstrip()
    else:
        print "NOT LAST", line.rstrip()



More information about the Python-list mailing list