如何在.txt檔案中獲取特定日期和時間範圍內的數據

2024-10-04 05:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我对一般的编码非常陌生,现在我正在使用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之间的台词


Tags: 文件pathtxthomemakestartmaxnamed
2条回答

一个选项是解析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)

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

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)

相关问题 更多 >