Python中多个yaml文件之间的调用

需求:有两个yaml文件 a.yaml、b.yaml ,现在想在a.yaml文件中使用b.yaml的内容

说明:方法不唯一,我们也可以直接在yaml中使用分隔符(---) 来写多个文件内容,但是下面主要讲解多个yaml文件

步骤:(1)定义两个yaml文件  (2)调用方法 (3)查看结果

一、定义两个yaml文件,分别如下:

b.yaml文件内容如下:

- basketball   #amazing
- Table-Tennis
- swim
- haha

a.yaml文件内容如下:注意 ,在a 文件中我通过!include  调用了b文件的内容(!include方法需要自己定义,接下来讲解)

name: demo  #中文注释
age: 18
hobby: !include b.yaml      #这里调用了b文件的内容

二、调用方法

重新定义一个yamlMany.py文件来查看结果,这里面定义了一个class,里面有!include 的来源说明(官网的例子,也可以直接去官网查看)

import yaml
import os.path
class Loader(yaml.Loader):
    def __init__(self, stream):
        self._root = os.path.split(stream.name)[0]
        super(Loader, self).__init__(stream)
    def include(self, node):
        filename = os.path.join(self._root, self.construct_scalar(node))
        with open(filename, 'r') as f:
            return yaml.load(f, Loader)
Loader.add_constructor('!include', Loader.include)

if __name__ == '__main__':
    with open('../data/a.yaml', 'r',encoding='UTF-8') as f:
        result = yaml.load(f, Loader)
        print(result)

  

三、查看结果

补充拓展:在被调用文件中(这里指b.yaml),我们尽量不要去使用中文的注释信息,否则可能会报编码错误的问题,切记!!!

原文地址:https://www.cnblogs.com/yanghr/p/14392509.html