Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何遍历日志文件中的特定时间范围?_Python_Python 2.7_Datetime_Logfile Analysis - Fatal编程技术网

Python 如何遍历日志文件中的特定时间范围?

Python 如何遍历日志文件中的特定时间范围?,python,python-2.7,datetime,logfile-analysis,Python,Python 2.7,Datetime,Logfile Analysis,例如: [2017-04-143:56:22085109] 如果这是事件A发生的时间,我想在日志文件中这一行之前15分钟,这将有数千行,我想在这段时间内遍历everyline并查找特定的关键字。日志文件中的每一行都有相同格式的时间戳。您可以使用开始和结束时间筛选所需的行 main.py from datetime import datetime, timedelta event_time = datetime.strptime('2017-04-14 03:56:22,085109', '%Y

例如:
[2017-04-143:56:22085109]


如果这是事件A发生的时间,我想在日志文件中这一行之前15分钟,这将有数千行,我想在这段时间内遍历everyline并查找特定的关键字。日志文件中的每一行都有相同格式的时间戳。

您可以使用开始和结束时间筛选所需的行

main.py

from datetime import datetime, timedelta

event_time = datetime.strptime('2017-04-14 03:56:22,085109', '%Y-%m-%d %X,%f')
event_start = event_time - timedelta(minutes=15)


def line_date(line):
    return datetime.strptime(line[1:27], '%Y-%m-%d %X,%f')


with open('example.log', 'r') as myfile:
    lines = filter(lambda x: event_start <= line_date(x) <= event_time,
                   myfile.readlines())


print(lines)

但是我建议您使用python3(而不是python2)
filter
返回一个迭代器,而不是完整的列表。

看一看,我强烈建议您使用一些数据库来运行这种类型的分析,而不是在python中运行。您可以使用classmethod将文件中的时间转换为python
datetime
实例,这些实例支持比较。然后,您可以使用它们选择文件中感兴趣的间隔内的行(假设在
datetime
实例中也有事件A的时间)。
[2017-04-13 03:56:22,085109] My old log
[2017-04-14 03:55:22,085109] My log in less than 15 minutes ago
[2017-04-14 03:56:22,085109] My important event
[2017-04-14 03:57:22,085109] Log after my important event