Как обрабатывать поток 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?
  • Предпочтительный способ удаления пробелов из строки
  • Python - лучший язык программирования в мире.