Martin Franklin wrote: > Xah Lee wrote: > >>Martin Franklin wrote: >> >> >>>import gzip >>>log_file = gzip.open("access_log.4.gz") >>>last_line = log_file.readlines()[-1] >>>log_file.close() >> >> >>does the >>log_file.readlines()[-1] >>actually read all the lines first? > > > > Yes I'm afraid it does. > > > >>i switched to system call with tail because originally i was using a >>pure Python solution >> >> inF = gzip.GzipFile(ff, 'rb'); >> s=inF.readlines() >> inF.close() >> last_line=s[-1] >> >>and since the log file is 100 megabytes it takes a long time and hogs >>massive memory. >> > > > Ok, in that case stick to your shell based solution, although 100 > megabytes does not sound that large to me I guess it is relative > to the system you are running on :) (I have over a gig of memory here) >
And just a few minutes after I sent that... this... import gzip logfile = gzip.open("access_log.4.BIG.gz") ## seek relative to the end of the file logfile.seek(-500) last_line = logfile.readlines()[-1] logfile.close() print last_line Works quite fast on my machine... Regards Martin -- http://mail.python.org/mailman/listinfo/python-list