使用 Python 在日期时间范围之间解析日志

利普凯

我正在尝试创建一个动态函数:我给出两个日期时间值,它可以读取这些日期时间值之间的日志,例如:

    start_point = "2019-04-25 09:30:46.781"
    stop_point =  "2019-04-25 10:15:49.109"

我正在考虑检查的算法:

  1. 如果日期相等:
    • 检查开始时间 0 字符(09 -> 0)是否高于或小于停止时间 0 字符(10 -> 1);
    • 同样检查小时 1 字符 ((start) 09 -> 9, (stop) 10 -> 0);
    • 与分钟 0 字符相同的检查;
    • 与分钟 1 个字符相同的检查;
  2. 如果日期不同:
    • 其他一些检查...

我不知道我是不是又在发明轮子了,但我真的很迷茫,我会列出我尝试过的事情:

1.

    ...
    cmd = subprocess.Popen(['egrep "2019-04-19 ([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9].[0-9]{3}" file.log'], shell=True, stdout=subprocess.PIPE)
    cmd_result = cmd.communicate()[0]
    for i in str(cmd_result).split("\n"):
        print(i)
    ...

这个问题:我添加了示例中的值但它无法工作,因为它具有无效的范围,例如小时 1 字符,它创建了范围 [9-0]、分钟字符 0 以及 [3-1] 等.

2.从The best way to filter a log by a date range in python中尝试了以下解决方案

任何帮助表示赞赏。

编辑

日志行结构:

    ...
    2019-04-25 09:30:46.781 text text text ...
    2019-04-25 09:30:46.853 text text text ...
    ...

编辑 2

所以我尝试了代码:

from datetime import datetime as dt

s1 = "2019-04-25 09:34:11.057"
s2 = "2019-04-25 09:59:43.534"

start = dt.strptime('2019-04-25 09:34:11.057','%Y-%m-%d %H:%M:%S.%f')
stop = dt.strptime('2019-04-25 09:59:43.534', '%Y-%m-%d %H:%M:%S.%f')

start_1 = dt.strptime('09:34:11.057','%H:%M:%S.%f')
stop_1 = dt.strptime('09:59:43.534','%H:%M:%S.%f')

with open('file.out','r') as file:
    for line in file:
        ts = dt.strptime(line.split()[1],'%H:%M:%S.%f')
        if (ts > start_1) and (ts < stop_1):
            print line

我得到了错误

ValueError: time data 'Platform' does not match format '%H:%M:%S.%f'

所以似乎我发现了另一个问题,它有时在行开始时包含非日期时间。有没有办法提供我提供日期时间格式的正则表达式?

编辑 3

修复了当字符串出现在行首时导致 ValueError 和固定索引超出范围错误时可能出现其他值的问题:

try:
    ts = dt.strptime(line.split()[1],'%H:%M:%S.%f')
    if (ts > start_1) and (ts < stop_1):
        print line
except IndexError as err:
    continue
except ValueError as err:
    continue

所以现在它不在我提供的范围内列出,现在它读取日志 FROM 2019-02-27 09:38:46.229TO 2019-02-28 09:57:11.028有什么想法吗?

马丁·埃文斯

您的编辑 2 有正确的想法。您需要进行异常处理以捕获格式不正确的行并跳过它们,例如空白行或没有时间戳的行。这可以按如下方式完成:

from datetime import datetime

s1 = "2019-04-25 09:24:11.057"
s2 = "2019-04-25 09:59:43.534"

fmt = '%Y-%m-%d %H:%M:%S.%f'

start = datetime.strptime(s1, fmt)
stop = datetime.strptime(s2, fmt)


with open('file.out', 'r') as file:
    for line in file:
        line = line.strip()
        
        try:
            ts = datetime.strptime(' '.join(line.split(' ', maxsplit=2)[:2]), fmt)
            
            if start <= ts <= stop:
                print(line)
                
        except:
            pass

整个时间戳用于创建ts,这样可以正确地与start进行比较stop

每行首先删除尾随的换行符。然后它在空格上最多分裂两次。前两个分割然后重新连接在一起并转换为一个datetime对象。如果失败,则意味着您没有正确格式化的行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用日期时间在 Python 中解析日期

来自分类Dev

使用filebeat在日期/时间之间合并日志

来自分类Dev

Python计算两个日期之间的时间范围长度

来自分类Dev

在 Python 中获取日期时间范围之间的小时数

来自分类Dev

使用DATETIME MySQL查询日期之间的时间范围

来自分类Dev

使用DATETIME MySQL查询日期之间的时间范围

来自分类Dev

使用Python缩放日期范围

来自分类Dev

python:使用正则表达式从日志文件中读取日期时间

来自分类Dev

在Python中使用日期时间

来自分类Dev

使用python的日期时间格式

来自分类Dev

在Python中使用日期时间

来自分类Dev

Python使用strptime解析日期

来自分类Dev

如何使用Java API在Elasticsearch中搜索特定日期和时间范围内的日志

来自分类Dev

使用Power Shell按日期和时间范围过滤活动日志条目

来自分类Dev

如何使用python筛选时间序列或数据帧中的日期范围

来自分类Dev

使用python pandas解析日志文件

来自分类Dev

使用Regex在Python中解析日志文本

来自分类Dev

如何使用某些键解析日志-Python

来自分类Dev

如何在JavaScript,JSON和python和mongodb之间使用日期时间?

来自分类Dev

如何在JavaScript,JSON和python和mongodb之间使用日期时间?

来自分类Dev

使用JavaScript解析Apache日志时间戳

来自分类Dev

使用Perl在Apache日志中解析时间

来自分类Dev

在Matplotlib中使用Python的日期时间错误

来自分类Dev

HTML使用Python编码日期时间

来自分类Dev

在python中使用多种日期时间格式

来自分类Dev

使用JSON API的Python日期时间

来自分类Dev

在python中使用日期时间类型绘图

来自分类Dev

有没有办法在python中列出2个数据时间之间的日期时间范围?

来自分类Dev

有没有办法在python中列出2个数据时间之间的日期时间范围?

Related 相关文章

  1. 1

    使用日期时间在 Python 中解析日期

  2. 2

    使用filebeat在日期/时间之间合并日志

  3. 3

    Python计算两个日期之间的时间范围长度

  4. 4

    在 Python 中获取日期时间范围之间的小时数

  5. 5

    使用DATETIME MySQL查询日期之间的时间范围

  6. 6

    使用DATETIME MySQL查询日期之间的时间范围

  7. 7

    使用Python缩放日期范围

  8. 8

    python:使用正则表达式从日志文件中读取日期时间

  9. 9

    在Python中使用日期时间

  10. 10

    使用python的日期时间格式

  11. 11

    在Python中使用日期时间

  12. 12

    Python使用strptime解析日期

  13. 13

    如何使用Java API在Elasticsearch中搜索特定日期和时间范围内的日志

  14. 14

    使用Power Shell按日期和时间范围过滤活动日志条目

  15. 15

    如何使用python筛选时间序列或数据帧中的日期范围

  16. 16

    使用python pandas解析日志文件

  17. 17

    使用Regex在Python中解析日志文本

  18. 18

    如何使用某些键解析日志-Python

  19. 19

    如何在JavaScript,JSON和python和mongodb之间使用日期时间?

  20. 20

    如何在JavaScript,JSON和python和mongodb之间使用日期时间?

  21. 21

    使用JavaScript解析Apache日志时间戳

  22. 22

    使用Perl在Apache日志中解析时间

  23. 23

    在Matplotlib中使用Python的日期时间错误

  24. 24

    HTML使用Python编码日期时间

  25. 25

    在python中使用多种日期时间格式

  26. 26

    使用JSON API的Python日期时间

  27. 27

    在python中使用日期时间类型绘图

  28. 28

    有没有办法在python中列出2个数据时间之间的日期时间范围?

  29. 29

    有没有办法在python中列出2个数据时间之间的日期时间范围?

热门标签

归档