Мне нужно разобрать кучу огромных текстовых файлов, каждый по 100 МБ+. Это плохо отформатированные файлы журналов в формате CSV, но каждая запись состоит из нескольких строк, поэтому я не могу просто прочитать каждую строку и разделить их разделителем. Это также не заданное количество строк, поскольку, если есть пустые значения, иногда строка пропускается или некоторые строки переходят в следующую строку. Также разделитель записи может меняться в пределах одного и того же файла с «» на « ***** », а иногда есть строка с надписью «конец журнала #»
Пример журнала:
"Date:","6/23/2015","","Location:","Kol","","Target Name:","ILO.sed.908"
"ID:","ke.lo.213"
"User:","EDU\namo"
"Done:","Edit File"
"Comment","File saved successfully"
""
"Date:","6/27/2015","","Location:","Los Angeles","","Target Name:","MAL.21.ol.lil"
"ID:","uf.903.124.56"
"Done:","dirt emptied and driven to locations without issue, yet to do anyt"
"hing with the steel pipes, no planks "
"Comment"," l"
""
"end of log 1"
"Date:","5/16/2015","","Location:","Springfield","","Target Name:","ile.s.ol.le"
"ID:","84l.df.345"
"User:","EDU\bob2"
"Done:","emptied successfully"
"Comment","File saved successfully"
" ******* "
Как мне подойти к этому? Он должен быть эффективным, чтобы я мог быстро его обрабатывать, поэтому было бы неплохо уменьшить количество операций ввода-вывода с файлами. В настоящее время я просто читаю это в памяти сразу:
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
Я также несколько новичок в python, я знаю, как обрабатывать несколько файлов и запускать код для каждого, и у меня есть toString для вывода его в новый файл csv.
Другая проблема заключается в том, что некоторые из файлов журнала имеют размер в несколько ГБ, и было бы нецелесообразно сразу считывать все это в память, но я не знаю, как разделить их на куски. Я не могу просто прочитать X строк, так как количество строк записи не установлено.
Комментарии должны быть сохранены и объединены в одну строку.
Пожалуйста, помогите!