Python:从日志中提取两行之间的时间戳

0 投票
1 回答
2747 浏览
提问于 2025-04-17 22:16

我刚开始学习Python,想写一个脚本来提取日志中几行的时间戳。

这些日志大概是这样的。

-----------------------------------------------
138976 2013-12-17 18:25:58.607 superman(759) Debug: {event} TUNE: IR Signal Received: Key Code: 104

138977 2013-12-17 18:25:58.616 mediamanager(763) Debug: {event} TUNE: Player Close Issued

138999 2013-12-17 18:25:58.683 mediamanager(763) Debug: {event} TUNE: Player Open Issued: atsc://fr783000000.256.10

139003 2013-12-17 18:25:58.688 mediamanager(763) Debug: {event} TUNE: Streamer Opened: atsc://fr783000000.256.10 SessionId=152 ProcessID=856

139014 2013-12-17 18:25:58.695 halserver(628) Debug: {event} TUNE: Frontend Locked: Tuner: 1

139030 2013-12-17 18:25:58.735 mediamanager(763) Debug: {event} TUNE: Player Play Issued: SessionId: 152


139133 2013-12-17 18:25:59.705 httpmediaserver(824) Debug: {event} TUNE: HTTP Request Received: HEAD /mediasession?producer_id=8&type=tune_live HTTP/1.1

139134 2013-12-17 18:25:59.757 halserver(628) Debug: {event} TUNE: New Picture Received

139136 2013-12-17 18:25:59.757 halserver(628) Debug: {event} TUNE: Video Is Visible
---------------------------------------

基本上,中间还有一些不需要的行。有些行出现的顺序也不固定,我想要做的是在调音事件出现时提取相关数据。

有没有人能给我一些建议呢?

提前谢谢大家 :-)

1 个回答

4

我还是不太明白你在问什么。你是想要把两个事件之间的时间戳收集到一个列表里,还是想根据日志文件来找出这两个事件之间的时间呢?

import re

with open('my_log.txt') as my_log:
  a = [re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}',
      line)[0] for line in my_log.readlines() if 'TUNE:' in line]
print a

如果你想要把时间戳放在一个列表里,输出结果是:

['2013-12-17 18:25:58.607', '2013-12-17 18:25:58.616',
 '2013-12-17 18:25:58.683', '2013-12-17 18:25:58.688',
 '2013-12-17 18:25:58.695', '2013-12-17 18:25:58.735',
 '2013-12-17 18:25:59.705', '2013-12-17 18:25:59.757',
 '2013-12-17 18:25:59.757']

如果你想知道第一个事件和最后一个事件之间的时间差,输出结果是:

from dateutil import parser

t_delta = parser.parse(a[-1]) - parser.parse(a[0])
print t_delta #0:00:01.150000

撰写回答