Cómo procesar un flujo YAML en Python

Tengo una aplicación de línea de comandos que genera continuamente datos YAML en la forma:

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

Lo hace por toda la eternidad. Me gustaría escribir un script de Python que lea continuamente cada uno de estos registros.

La biblioteca PyYAML parece ser la mejor para tomar cadenas completamente cargadas e interpretarlas como un documento completo de YAML. ¿Hay una manera de poner PyYAML en un modo de “transmisión”?

¿O es mi única opción dividir los datos yo mismo y alimentarlos poco a poco en PyYAML?

Esto es lo que he terminado usando, ya que no parece haber un método incorporado para lograr lo que quiero. Esta función debe ser lo suficientemente genérica como para poder leerla en una secuencia de YAML y devolver objetos de nivel superior a medida que se encuentren.

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 

¿Alguien puede hacerlo mejor?

Todas las referencias a la transmisión en la documentación parecen estar refiriéndose a una secuencia de documentos … Nunca he intentado usarla de la manera que usted describe, pero parece que es una parte de los datos formar una secuencia de documentos. Un enfoque razonable.