Мне нужно проанализировать журналы в формате jsonlines . Они хранятся в сжатом формате (.gz). Мне нужно прочитать каждую строку из файла, который является допустимой записью JSON, и переместить запись с соответствующим ключом «событие» в другой файл.
С помощью модуля jsonlines я могу прочитать файл, но всякий раз, когда в какой-либо записи JSON (или любой строке в файле) отсутствует клавиша "события", выдается ошибка. Не во всех записях JSON в файле будет присутствовать ключ «событие».
Вот пример содержимого из одного файла:
{"Product":"apple","event":"login","timestamp":"2018-09-27T17:35:55.835Z","version":2}
{"Product":"apple","timestamp":"2018-09-27T17:35:55.835Z","Id":"faf91826-ebc9-4242-996f-d52969bec2d5","version":2}
{"Product":"apple","event":"LandingPage","timestamp":"2018-09-27T17:14:22.998Z","Id":"88016b33-72d7-458e-8de8-f76241f4b681","version":2}
{"Product":"apple","event":"LandingPage","timestamp":"2018-09-27T17:38:55.835Z","version":2}
{"Product":"apple","event":"login","timestamp":"2018-09-27T17:37:55.835Z","version":2}
import jsonlines
import json
import os
with jsonlines.open('/Users/logfile') as reader:
for obj in reader:
try:
# my_json_dict = json.loads(obj)
value1 = obj.get['event', 'default']
print(value1)
if value1 == 'login'
except NameError as ee:
print(type(ee))
print(ee)
После анализа около 1 тыс. Файлов jsonlines, создаваемых каждый день, мой вывод будет содержать три файла, содержащих записи json для конкретных событий:
login.jsonl (with "event":"login")
LandingPage.jsonl (with "event":"LandingPage")
original source file (with missing "event" key)