使用python从日志文件计算增量时间
我一直在试图从日志文件中查找第一个和最后一个时间戳的增量 下面是日志文件的一部分使用python从日志文件计算增量时间,python,extract,Python,Extract,我一直在试图从日志文件中查找第一个和最后一个时间戳的增量 下面是日志文件的一部分 [2020-07-31 15:49:22,015][SRC.Env][I]:Reading [2020-07-31 15:49:22,015][SRC.Env][I]:Finished Initilization [2020-07-31 15:49:22,052][SRC][I]:Creating link [2020-07-31 15:49:22,053][SRC][I]:Starting . . . [20
[2020-07-31 15:49:22,015][SRC.Env][I]:Reading
[2020-07-31 15:49:22,015][SRC.Env][I]:Finished Initilization
[2020-07-31 15:49:22,052][SRC][I]:Creating link
[2020-07-31 15:49:22,053][SRC][I]:Starting
.
.
.
[2020-08-03 09:17:29,351][SRC.Upload][I]:Finished
以下是我迄今为止所做的工作
import re
from dateutil import parser
with open('run.log') as run_log:
times = [re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}',
line) for line in run_log.readlines() if 'SRC' in line]
print(times)
time_delta = parser.parse(times[-1]) - parser.parse(times[0])
print(time_delta)
当我打印时间时,它似乎显示了所有的时间(如预期的那样)['2020-07-31 15:49:22011'],['2020-07-31 15:49:22015'],…['2020-08-03 09:17:29351']
然而,当我试图将第一次减到最后一次时,我收到了以下错误
return DEFAULTPARSER.parse(timestr, **kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\dateutil\parser\_parser.py", line 646, in parse
res, skipped_tokens = self._parse(timestr, **kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\dateutil\parser\_parser.py", line 725, in _parse
l = _timelex.split(timestr) # Splits the timestr into tokens
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\dateutil\parser\_parser.py", line 207, in split
return list(cls(s))
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\dateutil\parser\_parser.py", line 76, in __init__
'{itype}'.format(itype=instream.__class__.__name__))
TypeError: Parser must be a string or character stream, not list
大约两个月前,我决定学习如何编写代码,所以任何帮助都将真正有助于我的进步。谢谢:)问题是返回一个列表
您可以使用re.findall(pattern,s)[0]
import re
from dateutil import parser
with open('run.log') as run_log:
times = [re.findall(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}',
line)[0] for line in run_log.readlines() if 'SRC' in line]
print(times)
time_delta = parser.parse(times[-1]) - parser.parse(times[0])
print(time_delta)
输出:
['2020-07-31 15:49:22,015', '2020-07-31 15:49:22,015', '2020-07-31 15:49:22,052', '2020-07-31 15:49:22,053', '2020-08-03 09:17:29,351']
2 days, 17:28:07.336000