Получить последние n строк файла с Python, похожего на tail

Я пишу средство просмотра файла журнала для веб-приложения, и для этого я хочу разбить на страницы строки журнала. Элементы в файле являются строками, основанными на самом новом элементе внизу.

Так что мне нужноtail() метод, который может читатьn линии снизу и поддерживает смещение. То, что я придумал, выглядит так:

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

Это разумный подход? Каков рекомендуемый способ привязки лог-файлов к смещению?

Ответы на вопрос(29)

Ваш ответ на вопрос