Чтение данных из файла журнала в python - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь проанализировать записи в журнале с повторяющимся шаблоном и записать каждую запись в свой собственный файл, используя python. Все записи журнала имеют общий формат:

ProcessID= abc
.
.
.
.
.
Size=76 bytes
EOE
------------------------------------------------------------------------

StartTime=abc
.
.
.
.
.
Size=76 bytes
EOE
------------------------------------------------------------------------

DifferentParameter=abc
.
.
.
.
.
Size=76 bytes
EOE
------------------------------------------------------------------------

Каждая запись имеет разное количество параметров. По сути, мне нужно разобрать только 2 параметра и отобразить их вместе, но не у каждой записи есть оба параметра, поэтому моя первая цель - разбить записи на отдельные файлы (или, если кто-то знает лучший способ разбить записи), а затем я буду дополнительно обрабатывать каждую запись с помощью регулярных выражений или что-то подобное.

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

rf = open('data.txt', 'r')
lines = rf.readLine()
rf.close()

i = 0

while i != 10:

for line in lines:
    while(line.find('EOE') == -1):
        with open('data'+(i)+'.txt', 'w') as wf:
            wf.write(line)

    file.seek(1,1)    
    i+=1

rf.close()  

1 Ответ

1 голос
/ 17 января 2020

на мой взгляд, есть некоторые проблемы даже с файлом журнала. Вы пытаетесь разделить по EOE, но при этом вы получите файлы, которые в начале имеют строку «-----», а другие нет (в частности, раздел «processID» не будет иметь «- --" с начала). Поэтому почему бы не разделить на "----"? Вторая проблема, пустые строки. Кроме того, в этом случае у вас будут некоторые файлы, которые начинаются с пустых строк, а другие - нет. Нужно принять это во внимание.

Я попытался решить все эти проблемы и получить файлы в том же формате, без пустых строк, которые начинаются со строки, содержащей "=".

Я назвал входной файл "log_stack.txt".

Вот мое скромное решение:

with open("log_stack.txt") as f:
    read_data = f.readlines()

s=""
counter=1

f=open("file_{}.txt".format(counter), "w")
for i in read_data:

  if(i.find("---") == -1):
    if(i!="\n"):
      s+=i
  else:
    f.write(s)
    s=""
    f.close()
    counter+=1
    f=open("file_{}.txt".format(counter), "w")
f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...