[EMAIL PROTECTED] wrote:
> I have a text file with many hundreds of lines of data. The data of
> interest to me, however, resides at the bottom of the file, in the last
> 20 lines. Right now, I read the entire file and discard the stuff I
> don't need. I'd like to speed up my program by reading only the last 20
> lines. How do I do this?
> 
> Thomas Philips
> 

What discernible speed increase are you talking about? How long does it 
take to read the "many hundreds" of lines?

For "many hundreds", IMHO it's not worth the bother, the complexity, the 
documentation, ...

Just do this, it's about as fast as you'll get in pure python for a 
smallish file:

def last_n_lines(filename, n):
    return open(filename, 'r').readlines()[-n:]

For many hundreds of thousands of lines, one approach might be to open 
the file in binary mode, seek to the end of the file, then loop reading 
chunks backwards and unpacking the chunks until you've found 21 line 
terminators. Or perhaps 20 line separators :-)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to