Как обрабатывать поток YAML в Python

У меня есть приложение командной строки, которое непрерывно выводит данные YAML в форме:

 - col0: datum0
   col1: datum1
   col2: datum2
 - col0: datum0
   col1: datum1
   col2: datum2
 ...

Он делает это на всю вечность. Я хотел бы написать скрипт Python, который непрерывно читает каждую из этих записей.

Библиотека PyYAML лучше всего подходит для загрузки полностью загруженных строк и интерпретации их как полного документа YAML. Есть ли способ превратить PyYAML в «потоковый» режим?

Или мой единственный вариант – побить данные самостоятельно и немного пополнить его в PyYAML?

2 Solutions collect form web for “Как обрабатывать поток YAML в Python”

Вот что я использовал, поскольку не существует встроенного метода для выполнения того, что я хочу. Эта функция должна быть достаточно общей, чтобы она могла считываться в потоке YAML и возвращать объекты верхнего уровня по мере их возникновения.

def streamInYAML(stream): y = stream.readline() cont = 1 while cont: l = stream.readline() if len(l) == 0: cont = 0 else: if l.startswith(' '): y = y + l else: yield yaml.load(y) y = l 

Может ли кто-нибудь лучше?

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

  • Есть ли способ скремблировать строки в python?
  • Используйте строку для вызова функции в Python
  • Разделение строки на слова и пунктуацию
  • Python string 'in' алгоритм реализации оператора и временная сложность
  • Аранжировка букв самым выразительным способом?
  • Список рассылки для Python
  • Что означает начало `\ x` в строке Python` \ xaa`
  • Использование decode () против regex для отмены этой строки
  • Подавить u'prefix, указывающий unicode 'в строках python
  • Shift + Return для вставки строки в python
  • Создание словаря из строки
  • Python - лучший язык программирования в мире.