[英]Read file in python from specific file
我的日志文件很大,我想從該日志中閱讀相關部分。
每個部分都以###start log###
,因此我需要搜索###start log###
的最后一次出現,並讀取各行,直到文件結尾。
我看到了一種解決方案,它可以通過查找(數字)來搜索行,但是我不知道,我只知道行的內容。
這種情況下最好的解決方案是什么?
我建議向后讀取文件,直到第一次出現start標簽。 您可以通過以下兩種方式之一進行操作:如果文件適合內存,請嘗試以下操作: 使用python以相反的順序讀取文件
如果文件太大-您可能會發現此鏈接有用: http : //code.activestate.com/recipes/120686-read-a-text-file-backwards/
給定文件的大小,您基本上需要以相反的順序讀取文件。 有一些關於如何在python中以相反順序讀取文件的文章; 如果您使用的是unix系統,則還可以查看unix tac
命令,然后通過管道讀取輸出,並在單擊日志開頭時停止:
>>> from subprocess import PIPE, Popen
>>> from itertools import takewhile
>>> with Popen(['tac', 'tmp.txt'], stdout=PIPE) as proc:
... iter = takewhile(lambda line: line != b'###start log###\n', proc.stdout)
... lines = list(iter)
然后,最后的日志行按正確的順序將是:
>>> list(reversed(lines))
with open(filename) as handle:
text = handle.read()
lines = text.splitlines()
lines.reverse()
i = next(i for i, line in enumerate(lines) if line == '###start log###')
relevant_lines = lines[:i]
relevant_lines.reverse()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.