Фильтровать необработанный текстовый файл в отдельные файлы .csv на основе определенных условий, сохраняя заголовок из исходного файла? - PullRequest
0 голосов
/ 27 июня 2019

Я беру большой текстовый файл, который содержит несколько таблиц результатов испытаний, которые содержат разные заголовки. Я хотел бы создать файл CSV для каждого конкретного теста с его данными, избегая жесткого кодирования открытых файлов.

Большой текстовый файл выглядит так:
Тест заголовка 1
Тест 1 ряд данных
Тест 1 ряд данных
Тест 1 ряд данных
Тест 1 ряд данных
Тест 1 ряд данных
Тест заголовка 3
Тест 3 строки данных
Тест 3 строки данных
Тест заголовка 2
Тест 2 строки данных
Тест 2 строки данных
Тест 2 строки данных
Тест 2 строки данных
Тест заголовка 1
Тест 1 ряд данных
Тест 1 ряд данных
Тест 1 ряд данных
Тест 1 ряд данных
Тест заголовка 2
Тест 2 строки данных
Тест 2 строки данных
... и т. д. случайный порядок результатов испытаний.

Выходными данными должны быть три файла CSV для каждого теста.

Смотрите код ниже для того, что я пробовал.

for line in raw_test_data:
   if line.endswith(header info):
      current_header = line
   else:
      # test name is always in same column
      test = line.split(",")[1]
      if test not in testsuite:
         testsuite.append(test)
         # is this the proper use for data dictionary??
         # maybe use instead of testsuite.append to check
         file_dictionary[test] = str(path + "\\" + folder + "\\" + test + ".CSV")

      current_output_file = open(file_dictionary[test], "w+")

      # if file empty, it needs the header
      if os.path.getsize(file_dictionary[test]) > 0: 
         output_file.writelines(current_header) 

      # write row of data to file
      output_file.writelines(line)
      # would love to avoid opening/closing everytime
      output_file.close()

Файлы, которые мне нужны, создаются, но только с одной строкой, в то время как я ожидаю current_header и все строки в тесте. Могу ли я избежать открытия и закрытия файлов каждый цикл? Любой совет?

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