tail과 유사하게 파일의 마지막 n줄 가져오기

| | | | | | | | | | |

저는 웹 애플리케이션용 로그 파일 뷰어를 작성 중이며 이를 위해 로그 파일의 줄을 페이지로 나누려고 합니다. 파일의 항목은 맨 아래에 있는 최신 항목을 기준으로 한 줄입니다.

그래서 맨 아래에서 n 줄을 읽고 오프셋을 지원할 수 있는 tail() 메서드가 필요합니다. 이것이 제가 생각해낸 모자입니다.

def tail(f, n, offset=0): """ 오프셋 라인의 오프셋으로 f에서 라인을 읽습니다.""" avg_line_length = 74 to_read = n + offset while 1: 시도: f.seek(-(avg_line_length * to_read), 2) IOError 제외: # woops. 분명히 파일이 우리가 원하는 것보다 작습니다. f.tell() lines = f.read().splitlines() if len(lines) >= to_read 또는 pos == 0: 반환 줄[-to_read:offset 및 -offset 또는 없음] avg_line_length *= 1.3 

이것이 합리적인 접근 방식입니까? 오프셋을 사용하여 로그 파일을 종료하는 권장 방법은 무엇입니까?