獲取文件的最後n行,類似於tail

| | | | | | | | | | |

我正在為 Web 應用程序編寫日誌文件查看器,為此我想通過日誌文件的行進行分頁。文件中的項目基於行,最新的項目位於底部。

所以我需要一個 tail() 方法,它可以從底部讀取 n 行並支持偏移量。這是我想出的帽子:

def tail(f, n, offset=0): """"從 f 中讀取偏移行的偏移量。"""" avg_line_length = 74 to_read = n + offset while 1: try: f.seek(-(avg_line_length * to_read), 2) except IOError: # woops. 顯然文件比我們想要的要小 # 後退,轉到開頭 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 

這是一個合理的方法嗎?推薦使用偏移量尾隨日誌文件的方法是什麼?