У меня есть скрипт, который читает файл журнала, который содержит сотни этих журналов, и ищет те, которые имеют тип «Вкл., Выкл. Или Переключение». Затем я вывожу каждый журнал в свой список. Я пытаюсь найти способ извлечь время выхода и время в отдельный список / массив, а затем вычесть два раза, чтобы найти продолжительность каждого отдельного журнала. Вот как выглядят выходные журналы:
['2020-01-31T12:04:57.976Z 1234 Out: [2020-01-31T00:30:20.150Z] Id: {"Id":"4-f-4-9-6a"', '"Type":"Switch"', '"In":"2020-01-31T00:30:20.140Z"']
Это мой текущий код:
logfile = '/path/to/my/logfile'
with open(logfile, 'r') as f:
text = f.read()
words = ["On", "Off", "Switch"]
text2 = text.split('\n')
for l in text.split('\n'):
if (words[0] in l or words[1] in l or words[2] in l):
log = l.split(',')[0:3]
Я застрял на том, как настроить таргетинг только на значения времени Out и In из логи и положить их в массив и преобразовать в значение времени, чтобы найти продолжительность.
Первоначальный журнал перед сценарием: все, что находится после времени ввода, бесполезно для того, что я ищу, поэтому у меня выводятся только первые три индекса
2020-01-31T12:04:57.976Z 1234 Out: [2020-01-31T00:30:20.150Z] Id: {"Id":"4-f-4-9-6a","Type":"Switch,"In":"2020-01-31T00:30:20.140Z","Path":"interface","message":"interface changed status from unknown to normal","severity":"INFORMATIONAL","display":true,"json_map":"{\"severity\":null,\"eventId\":\"65e-64d9-45-ab62-8ef98ac5e60d\",\"componentPath\":\"interface_css\",\"displayToGui\":false,\"originalState\":\"unknown\",\"closed\":false,\"eventType\":\"InterfaceStateChange\",\"time\":\"2019-04-18T07:04:32.747Z\",\"json_map\":null,\"message\":\"interface_css changed status from unknown to normal\",\"newState\":\"normal\",\"info\":\"Event created with current status\"}","closed":false,"info":"Event created with current status","originalState":"unknown","newState":"normal"}