Текстовый файл процесса Python со смесью данных - PullRequest
0 голосов
/ 07 ноября 2019

в ответ на мой предыдущий вопрос .. Я упростил это ... Мне нужно обработать текстовый файл. Необходимо прочитать текстовый файл, определить определенное слово и обработать следующие несколько строк, затем продолжить чтение файла, определить какое-либо слово и обработать следующие несколько строк. Как мы можем сделать это Python.

Текстовый файл содержит информацию о сетевых устройствах, и информация имеет неструктурный формат, а формат информации отличается для каждого сетевого устройства. Мне нужно проверить, если обнаружение нескольких слов обрабатывает несколько строк под ним и после завершения сохранить его в файл JSON. Затем продолжите чтение файла и определите слова и обработайте несколько строк под ним ... например, ниже ... определите AAA и обработайте всю строку перед строкой "Done!" ... чем продолжите чтение файла и, если обнаружите поставщика AAA,BBB и CCC запускают обработку строки перед строкой «Done!». Процесс каждого поставщика будет отличаться, и процесс закончится строкой Done!

Например, ниже

vendor: AAA
ID:1
line3-------------
line4------------
line5------------
Done!

vendor:BBB
ID:5
line10-------------
line11-----------
line12------------
line13-------------
line14------------
line15------------
Done!

vendor:CCC
ID:10
line20-------------
line21------------
line22------------
line23-------------
Done!

vendor:BBB
ID:8
line28-------------
line29------------
line30------------
line31-------------
line32------------
line33------------
Done!

vendor: AAA
ID:4
line38-------------
line39------------
line40------------
Done!

Чем каждый процесс для каждого идентификатора будет сохранен в файле json

Это то, что я сделал до сих пор

with open("outputFile.txt", "r") as file:
   for line in file:
      if 'AAA' in line:
         next(file)
         data = [line.strip().split() for line in file]
         print("This is AAA") 

         dict = {"scan":[]}
         for x in data:
            --extract line of data below ID--

         with open('outputAAA.json', 'w') as f:
            json.dump(dict, f)
      elif 'BBB' in line:
         next(file)
         data = [line.strip().split() for line in file]
         print("This is BBB") 

         dict = {"scan":[]}
         for x in data:
            --extract line of data below ID--

         with open('outputBBB.json', 'w') as f:
            json.dump(dict, f)
      elif 'CCC' in line:
         next(file)
         data = [line.strip().split() for line in file]
         print("This is CCC") 

         dict = {"scan":[]}
         for x in data:
            --extract line of data below ID--

         with open('outputCCC.json', 'w') as f:
            json.dump(dict, f)
      else:
         print("No vendor recognised")
         continue

Проблема ...

  1. это создаст файл json AAA, BBB и CCC
  2. будет перезаписывать файл json
  3. Чтение файла как-то не будет продолжаться в последней точке. Что я имею в виду здесь ... после обнаружения, например, AAA ... обработайте строки с 3 по 5 и запишите файл json, а затем продолжите, начните снова читать последнюю строку и обнаружите AAA, BBB или CCC ... если обнаружите BBB ... обработайте следующие несколько строк до строки Done! ... чем продолжить чтение файла ... и если обнаружите AAA снова ... запустите процесс для AAA ... и так далее ...
  4. Итерация неправильно запустить, чтобы обнаружить и запустить процесс соответственно.

Спасибо за некоторые советы о том, как сделать это в Python ... спасибо

1 Ответ

0 голосов
/ 07 ноября 2019

Если вы новичок в области файлового ввода-вывода, следуйте руководству , чтобы начать работу.

Похоже, что ваш JSON перезаписывается при каждом открытии в вашем ifеще заявления. Режим, который вы открываете с помощью 'w', перезапишет файл, если он уже существует. Если вы хотите добавить в конец, вам нужно будет использовать режим 'a' для добавления в конец файла.

with open('outputBBB.json', 'a') as f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...