python - 如何在日志中找到字符串的最后一个实例?
问题描述
我做了一个日志文件,我想拿它并想找到特定用户在线的最后一个实例,日志文件如下所示:
----------------------------------------------
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 用户最后一次在线。(我有用户的名字和鉴别器)
解决方案
您可以逐行读取文件,并将所有内容收集到一个列表中,直到 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))
(它也收集------
线条,摆脱它们留给读者)
推荐阅读
- python - 当我在 vps 上启动 TorToolKit Bot 电报时出现错误
- c++ - 在 C++ 中使用 OpenCV 相机校准的奇怪结果
- windows - 我在 gradle 中启动包装器时遇到问题
- ios - 在 ScrollView 中正确放置视图
- pine-script - 跟踪亏损、部分获利的策略问题。找不到对我要完成的工作的参考
- google-apps-script - 是否可以将使用 DocumentApp.openById() 检索到的数据存储为变量或缓存?
- javascript - 无法从 web3model 或 web3 断开或关闭或清除帐户
- javascript - 在组件函数内部定义reducer?
- python - Matplotlib 与使用 Arduino 的超声波传感器
- html - 如何去除离子玻片两侧的边距?