簡體   English   中英

從特定文件中讀取python中的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM