在Python中,如果你需要处理包含多个独立YAML文档的单个文件,ruamel.yaml库同样支持这一功能。YAML规范允许在一个文件中包含多个文档,每个文档之间通过三个连字符 (---
) 分隔。下面是如何使用ruamel.yaml读取和写入包含多个文档的YAML文件:
读取包含多个文档的YAML文件
python
import sys
from ruamel.yaml import YAML
yaml = YAML(typ='rt')
with open('multiple_docs.yml') as file:
while True:
try:
# 每次迭代读取下一个文档
document = yaml.safe_load(file)
# 处理每个文档
print(document)
except ruamel.yaml.parser.ParserError as e:
# 如果到达文件末尾或其他错误,退出循环
if 'end of stream' in str(e):
break
else:
raise e
写入包含多个文档的YAML文件
python
import sys
from ruamel.yaml import YAML
yaml = YAML(typ='rt')
documents = [
{'doc1': 'value1'},
{'doc2': 'value2'},
# 更多文档...
]
# 打开文件用于写入
with open('multiple_docs_output.yml', 'w') as outfile:
for doc in documents:
# 对于每个文档,将其写入并添加文档分隔符
yaml.dump(doc, outfile)
outfile.write('\n---\n')
# 确保最后有一个结束的文档分隔符
outfile.write('...\n')
上述代码片段展示了如何使用ruamel.yaml逐个读取和写入包含多个文档的YAML文件。在读取过程中,不断尝试加载下一个文档直到文件结束;而在写入过程中,在每个文档后添加---
以区分不同文档,并在文件结尾处加上三个点...\n
表示所有文档结束。