Получение AttributeError: объект list не имеет атрибута split при преобразовании формата файла .log в формат .json. - PullRequest
0 голосов
/ 05 декабря 2018

Привет, ребята, у меня есть файл журнала Эта информация журнала я создал программой python, но хочу напечатать этот файл журнала в файл .json

2018-12-04 11:45:41,820 - DATA-MANUFACTURING - INFO - Uploading the file
2018-12-04 11:45:41,852 - DATA-MANUFACTURING - DEBUG - recordCount - 1000
2018-12-04 11:45:41,853 - DATA-MANUFACTURING - DEBUG - fromYear - 1970
2018-12-04 11:45:41,853 - DATA-MANUFACTURING - DEBUG - toYear - 1974
2018-12-04 11:45:41,854 - DATA-MANUFACTURING - DEBUG - FileName - <FileStorage: 'Data_Large1.csv' ('application/vnd.ms-excel')>
2018-12-04 11:45:41,899 - DATA-MANUFACTURING - DEBUG - File saved to destination folder
2018-12-04 11:45:41,900 - DATA-MANUFACTURING - INFO - Uploading file is done
2018-12-04 11:45:41,902 - werkzeug - INFO - 127.0.0.1 - - [04/Dec/2018 11:45:41] "POST /UploadFile HTTP/1.1" 302 -
2018-12-04 11:45:41,912 - DATA-MANUFACTURING - INFO - Data manufacturing process started
2018-12-04 11:45:41,913 - DATA-MANUFACTURING - DEBUG - Year Array - [1970, 1971, 1972, 1973, 1974]
2018-12-04 11:45:41,954 - DATA-MANUFACTURING - INFO - Readed the csvfile
2018-12-04 11:45:41,955 - DATA-MANUFACTURING - INFO - Segmentation for the 'recordCount' is started
2018-12-04 11:45:41,955 - DATA-MANUFACTURING - INFO - SegmentValues is appended
2018-12-04 11:45:41,956 - DATA-MANUFACTURING - DEBUG - segmentValues - [1, 2.0, 3, 4, 2, 1, 5, 89, 1, 10, 81, 1]
2018-12-04 11:45:41,957 - DATA-MANUFACTURING - INFO - segmentation for the data is done
2018-12-04 11:45:42,183 - DATA-MANUFACTURING - INFO - Segmentation for the 'recordCount' is started
2018-12-04 11:45:42,184 - DATA-MANUFACTURING - INFO - SegmentValues is appended
2018-12-04 11:45:42,185 - DATA-MANUFACTURING - DEBUG - segmentValues - [1, 1, 9, 108, 31, 1, 35, 1, 1, 1, 2.0, 9]
2018-12-04 11:45:42,186 - DATA-MANUFACTURING - INFO - segmentation for the data is done
2018-12-04 11:45:42,475 - DATA-MANUFACTURING - INFO - Segmentation for the 'recordCount' is started
2018-12-04 11:45:42,476 - DATA-MANUFACTURING - INFO - SegmentValues is appended
2018-12-04 11:45:42,477 - DATA-MANUFACTURING - DEBUG - segmentValues - [1, 1, 8, 1, 5, 1, 112, 2.0, 48, 1, 2, 18]
2018-12-04 11:45:42,477 - DATA-MANUFACTURING - INFO - segmentation for the data is done

для этого я написалкод, который получен онлайн:

with open("info.log", "r") as log_file:
    log_string = log_file.read().splitlines()
response_string = log_string.split("Response :")[1].strip()
response_obj = json.loads(response_string)
with open("outfile", "w") as out_file:
    out_file.write(json.dumps(response_obj))

но здесь я получаю ошибку вроде:

IndexError: list index out of range

Затем я попытался другим способом:

with open('data_generation.log', 'r') as logfile, open('output.json', 'w') as jsonfile:
    json_data = re.search(r'(Response:\s*)(.*)(?=\(HttpClientUtil\))', logfile.read(), re.DOTALL)
    if json_data:
        json.dump(json.loads(json_data.group(2)), jsonfile)

Здесь DOTALL не работает, я не знаю, почему он не работает ... На самом деле, я не так много знаю Json, поэтому я не понимаю, как это сделать, если кто-нибудь знает, как это сделать, пожалуйста, помогите мне ..Спасибо

1 Ответ

0 голосов
/ 05 декабря 2018

, если вы хотите преобразовать файл журнала в json, вы можете читать файл журнала построчно, например

fo = open("foo.txt", "rw+") linesOfLogs = fo.readlines()

, как только вы получитеСтроки, которые мы можем перебрать по строкам с логами и разделить строку на основе 'Response:', а затем мы можем использовать все элементы в качестве ключей, кроме последнего.и используя последний в качестве значения для json, мы можем сделать что-то вроде:

jsonData = {}
for lineOfLog in liesOfLogs:
    listOfStrings = lineOfLog.split('Response :')
    if len(listOfStrings)>1:
        jsonData[listOfStrings[0]] = listOfStrings[1]

Теперь мы можем легко сохранить jsonData, используя библиотеку json Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...