首页 > 解决方案 > 从文本文件中读取数据,用 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 分钟的数据写入日志文件(无论是错误还是上述格式的完美日志)?

[编辑]在日志之间添加了一条错误行

标签: pythonpython-3.xpython-2.7filewith-statement

解决方案


你可以在

******************************************\n\n

record_list = file_Obj.read().split("******************************************\n\n")

这将为您提供列表中的每条独立记录。您可能需要转义反斜杠。您可以通过切片来获取列表的最后一个元素。

print(record_list[-1])

推荐阅读