Сообщить об ошибке.

Загрузка нескольких документов YAML в Python

Функция yaml.load_all() модуля PyYAML в Python

Один файл YAML может содержать более одного документа. Один документ заканчивается необязательными 3-мя точками '...' и следующий документ начинается с обязательным тройным тире '---'. Можно прочитать все документы, расположенные в файле, используя функцию yaml.load_all().

Функция yaml.load_all() анализирует данные и возвращает последовательность объектов Python, соответствующих документам YAML.

import yaml

documents = """
---
name: Alicia
room: 10
description: Administrator.
---
name: Julia
room: 11
# обратите внимание как можно переносить 
# длинные строки в документе YAML
description: > 
  Software engineer.
---
name: Bob
room: 13
description: Employee
"""

data = yaml.load_all(documents, Loader=yaml.SafeLoader)
print(data)
# <generator object load_all at 0x7fa449c33900>
print(list(data))
# [{'name': 'Alicia', 'room': 10, 'description': 'Administrator.'}, 
# {'name': 'Julia', 'room': 11, 'description': 'Software engineer.\n'}, 
# {'name': 'Bob', 'room': 13, 'description': 'Employee'}]

Из примера видно, что функция yaml.load_all() возвращает генератор из прочитанных/загруженных документов. Можно распечатать эти документы в виде списка.

Пример загрузки того же документа YAML, только из файла.

Печать загруженных документов YAML происходит при итерации по возвращаемому генератору docs в цикле for/in:

import yaml
from yaml.loader import SafeLoader
# читаем `test.yaml` с 3 документами
with open('test.yaml', 'r') as f:
    docs = yaml.load_all(f, Loader=SafeLoader)
# итерируемся по генератору `docs`
for data in docs:
    print(data)

# {'name': 'Alicia', 'room': 10, 'description': 'Administrator.'}, 
# {'name': 'Julia', 'room': 11, 'description': 'Software engineer.\n'}, 
# {'name': 'Bob', 'room': 13, 'description': 'Employee'}