如何使用ruamel.yaml读取单个文件中的多个YAML定义
多YAML文档读取解决方案
完全支持从单个文件/流中读取多个YAML定义,你遇到的报错是因为load()方法默认仅加载单个YAML文档,多文档场景需要调用load_all()方法。
修正后示例代码
import ruamel.yaml text = ''' --- foo: bar --- baz: baz ... ''' yaml = ruamel.yaml.YAML(typ='rt') # load_all返回包含所有YAML文档的可迭代对象 yaml_docs = yaml.load_all(text) for doc in yaml_docs: print(doc) # 输出: # {'foo': 'bar'} # {'baz': 'baz'}
注意事项
load_all()返回的是迭代器,仅能遍历一次,如需重复使用请先转换为列表:doc_list = list(yaml.load_all(text))- 该方法对所有
typ参数(包括你用的rt往返模式)都兼容,无需修改实例化参数 - 你当前使用的0.17.16版本完全支持该特性,不需要调整ruamel.yaml版本
内容的提问来源于stack exchange,提问作者Bruno Miranda
相关产品推荐
相关产品推荐

