python - 从文本文件中读取数据,用 Python 在特定时间段内编写
问题描述
为了详细解释,我有一个文本文件,我在其中记录了来自不同数量的流程实例的一些数据(即可能有 4 到 16 个流程实例生成日志)。
所有实例都以以下格式写入一个文件:
2018-09-07 11:34:47,251 - AppLog - INFO -
******************************************
Log Report - Consume Cycle jhTyjs-ConsumeCycle
******************************************
Uptime: 144708.62724542618s
Jobs Run: 16866
Jobs Current: 1
Q Avg Read Time: 0
Q Msgs Read: 0
Worker Load: ['1.00', '1.00', '1.00']
******************************************
2018-09-07 11:37:47,439 - AppLog - INFO -
******************************************
Log Report - Consume Cycle aftTys-ConsumeCycle
******************************************
Uptime: 144888.81490063667s
Jobs Run: 16866
Jobs Current: 1
Q Avg Read Time: 0
Q Msgs Read: 0
Worker Load: ['1.00', '1.00', '1.00']
******************************************
This is an error line which could be generated by any of the instances and can be anything, <br> like qfuigeececevwovw or wefebew efeofweffhw v wihv or any python \n exception or aiosfgd ceqic eceewfi
2018-09-07 11:40:47,615 - AppLog - INFO -
******************************************
Log Report - Consume Cycle hdyGid-ConsumeCycle
******************************************
Uptime: 145068.99103808403s
Jobs Run: 16866
Jobs Current: 1
Q Avg Read Time: 0
Q Msgs Read: 0
Worker Load: ['1.00', '1.00', '1.00']
******************************************
(在Log Report - Consume Cycle [placeholder]-ConsumeCycle
每个日志中,[placeholder]
都是随机的)
所以,我的文件由大量上述格式的日志组成,一个接一个。每个实例每 3 分钟生成一次日志。(即所有实例在 3 分钟内只生成一个日志)
如果任何实例出现错误,它们也会将其记录在同一个文件中。所以数据结构完全不一致。
现在,我必须从所有实例中获取最后记录的数据,即最后 3 分钟的数据,并对它们执行一些任务。
有什么方法可以将最后 3 分钟的数据写入日志文件(无论是错误还是上述格式的完美日志)?
[编辑]在日志之间添加了一条错误行
解决方案
你可以在
******************************************\n\n
和
record_list = file_Obj.read().split("******************************************\n\n")
这将为您提供列表中的每条独立记录。您可能需要转义反斜杠。您可以通过切片来获取列表的最后一个元素。
print(record_list[-1])
推荐阅读
- php - Laravel & VueJS CORS 尝试对用户进行身份验证时出现问题,即使使用 Cors 中间件也是如此
- ios - 从 iOS Biometrics 身份验证中捕获用户照片
- openid-connect - OIDC - at_hash 验证
- css - CSS无序列表,带点全块宽度下划线
- python - 如果从另一列的同一行看到新值,则重复前一行的值然后求和,然后在 Python 中重复当前行
- docker - 当我尝试在 Docker 上附加 Rails 容器时,“您无法附加到已停止的容器,请先启动它”
- python - 将这种将列附加到多个 dfs 的低效代码变成 for 循环?
- python - 我如何使用网络爬行提取 class = main-bullet 的链接
- reactjs - 具有大写函数名称的组件在 React Hooks 中被多次渲染
- go - 在 Azure DevOps 中为 Go 设置代码覆盖率