On 2011-01-26 02:59:26 -0800, Xavier Heruacles said:
I have do some log processing which is usually huge. The length of each
line is variable. How can I get the last line?? Don't tell me to use
readlines or something like linecache...
This is not optimum or efficient, but it works! If you want to see
what's going on, use 4 instead of 4096 and 8 instead of 8192 and add a
print statement to the bottom of the while loop. :)
import os
with open('biglogfile.log', 'r') as fh:
fh.seek(-4096, os.SEEK_END)
buffer = fh.read(4096)
# We are expecting a trailing newline.
while "\n" not in buffer[:-1]:
fh.seek(-8192, os.SEEK_CUR)
buffer = fh.read(4096) + buffer
# Eliminate empty lines, they aren't useful.
lines = [line for line in buffer.split('\n') if line]
print lines[-1]
— Alice. :)
--
http://mail.python.org/mailman/listinfo/python-list