Obtenha as últimas n linhas de um arquivo com o Python, semelhante à cauda
Eu estou escrevendo um visualizador de arquivos de log para um aplicativo da web e para isso eu quero paginar através das linhas do arquivo de log. Os itens no arquivo são baseados em linha com o item mais novo na parte inferior.
Então eu preciso de umtail()
método que pode lern
linhas da parte inferior e suporta um deslocamento. O que eu pensei foi assim:
def tail(f, n, offset=0):
"""Reads a n lines from f with an offset of offset lines."""
avg_line_length = 74
to_read = n + offset
while 1:
try:
f.seek(-(avg_line_length * to_read), 2)
except IOError:
# woops. apparently file is smaller than what we want
# to step back, go to the beginning instead
f.seek(0)
pos = f.tell()
lines = f.read().splitlines()
if len(lines) >= to_read or pos == 0:
return lines[-to_read:offset and -offset or None]
avg_line_length *= 1.3
Esta é uma abordagem razoável? Qual é a maneira recomendada de rastrear arquivos de log com deslocamentos?