如何在.txt文件中的特定日期时间范围内获取数据

时间:2019-07-04 18:59:05

标签: python text

好的,我一般来说对编码还很陌生,到目前为止,我正在使用Python。我正在尝试从.txt文件中过滤信息。该文件是活动的日志,开始于00:00:00,结束于23:59:59。我需要从07:00:00到19:00:00的线路。我如何获得这样的结果?

我可以从特定的日期时间获取数据,但是还没有弄清楚如何精确地获取我想要的内容。

以下是.txt文件的简化示例:

08:07:21: -------------------------------------------
08:07:21: Make launched. OMAX Intelli-MAX� Premium 21.0
08:07:21: "LLAMA" is currently logged in to windows.
08:08:20: Home named "Path Interrupted" zeroed.
08:09:31: Home named "Path Start" zeroed.
08:09:40: Home named "Path Start" zeroed.
08:11:49: Home named "Path Start" zeroed.
08:33:13: Home named "Path Finished" zeroed.
08:34:24: Make Closed.
09:04:14: -------------------------------------------
09:04:14: Make launched. OMAX Intelli-MAX� Premium 21.0
09:04:14: "LLAMA" is currently logged in to windows.
09:04:43: Home named "Path Interrupted" zeroed.
09:05:54: Home named "Path Start" zeroed.
09:06:00: Home named "Path Start" zeroed.
09:09:48: Home named "Path Start" zeroed.
09:28:15: Home named "Path Finished" zeroed.
09:41:38: Make Closed.
20:04:20: Home named "Path Finished" zeroed.
20:07:50: Automatic homing routine activated.
20:13:14: Home named "Absolute" zeroed.
20:13:14: Automatic homing routine completed.
21:15:05: Make Closed.

最后,我想计算一份工作需要多长时间。例如,“路径开始”和“路径完成”之间的时差。但是我在这里要问的只是简单地如何读取07:00:00到19:00:00之间的行。

2 个答案:

答案 0 :(得分:1)

一种选择是解析datetime.datetime个对象,也许像这样:

import datetime

line_list = []
start_datetime = datetime.datetime(1900, 1, 1, 7, 0, 0)
end_datetime = datetime.datetime(1900, 1, 1, 19, 0, 0)

with open('test.txt') as f:
    for line in f:
        line = line.strip()
        if len(line) > 0:
            dt = datetime.datetime.strptime(line[:8], '%H:%M:%S')

            if start_datetime <= dt <= end_datetime:
                line_list.append(line)

答案 1 :(得分:0)

您可以使用一种基本策略来读取每行,然后对其进行过滤。

output = []

with open('info.txt', 'r') as f:
    for line in f.readlines():
        h = int(line.split(':')[0])    # Get the hour

        if 7 <= h <= 19:               # Check if the hour is in range
            output.append(line)