yaml引用变量_合并当前数据

时间:2025-04-05 08:11:20
1、& 锚点和 * 别名,可以用来引用,其中`&` 用于定义变量, `*` 用于引用变量, `<<` 表示合并到当前数据。

案例1:引用变量

#  文件内容
name: &name xiaoming
tester: *name
'''
# 相当于以下内容:
name: 灰蓝
tester: 灰蓝
'''

# python 代码
import yaml
import os

# 项目路径
project_path = ((__file__))[0].split('tools')[0]

def get_yaml_data(fileDir):
    """
    读取  文件内容
    :param fileDir:
    :return:
    """
    # 1、在内存里加载这个文件
    f = open(fileDir, 'r', encoding='utf-8')
    # 2、调用yaml读取文件
    # Loader= 更加安全
    res = (f, Loader=)
    return res


if __name__ == '__main__':
    info = get_yaml_data(project_path + r'\')
    print(info)

# 输出:
# {'name': 'xiaoming', 'tester': 'xiaoming'}

案例2:引用变量与合并当前数据

#  文件内容
defaults: &app
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  hello: *app

test:
  database: myapp_test
  <<: *app

# python代码
import yaml
import os

# 项目路径
project_path =((__file__))[0].split('tools')[0]

def get_yaml_data(fileDir):
    """
    读取  文件内容
    :param fileDir:
    :return:
    """
    # 1、在内存里加载这个文件
    f = open(fileDir, 'r', encoding='utf-8')
    # 2、调用yaml读取文件
    # Loader= 更加安全
    res = (f, Loader=)
    return res


if __name__ == '__main__':
    info = get_yaml_data(project_path + r'\')
    print(info)

# 输出:
# {
# 'defaults':
#   {'adapter': 'postgres', 'host': 'localhost'},
# 'development':
#     {'database': 'myapp_development',
#      'hello':
#         {'adapter': 'postgres', 'host': 'localhost'}},
# 'test': {'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_test'}
# }