Как получить данные в определенном диапазоне даты и времени в файле .txt - PullRequest
0 голосов
/ 04 июля 2019

Хорошо, я довольно новичок в кодировании в целом и на данный момент я использую 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 ]

1 голос
/ 04 июля 2019

Один из вариантов - проанализировать 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)
0 голосов
/ 04 июля 2019

Вы можете использовать базовую стратегию чтения каждой строки и последующей ее фильтрации.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...