首页 > 解决方案 > 如何在日志中找到字符串的最后一个实例?

问题描述

我做了一个日志文件,我想拿它并想找到特定用户在线的最后一个实例,日志文件如下所示:

----------------------------------------------
Logging started: 2019-12-05 12:42:19.591833 

Num of members in Test Server: 12
Members: 

test12345#0720
A part of server: Test Server
Current status: idle
Current activity: None 

Logging complete
-----------------

现在重复多次,因为它每X时间添加一个新日志,我想找到 Z 用户最后一次在线。(我有用户的名字和鉴别器)

标签: pythonpython-3.xstring

解决方案


您可以逐行读取文件,并将所有内容收集到一个列表中,直到 a Logging complete,然后检查用户是否存在并将候选者存储在辅助变量中,然后继续使用空列表。
最后,辅助变量将包含用户在场时的最后一个日志块。

像这样的东西:

user="test12345#0720"
last=None
current=[]
with open("test.log") as f:
  for line in f:
    current.append(line.strip()) # line contains the line-break character(s) too
    if line.startswith("Logging complete"): # if there may be extra info in the line
      if user in current:
        last=current
      current=[]
if last:
  print("\n".join(last))

(它也收集------线条,摆脱它们留给读者)


推荐阅读