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

本文详细介绍了 YAML 中的引用和合并操作,通过案例展示了如何使用 `&` 定义别名,`*` 引用别名以及 `<<` 合并数据。这些特性在配置文件管理和数据处理中非常实用,能够简化复杂结构的数据表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、& 锚点和 * 别名,可以用来引用,其中`&` 用于定义变量, `*` 用于引用变量, `<<` 表示合并到当前数据。

案例1:引用变量

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

# python 代码
import yaml
import os

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

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


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

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

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

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

development:
  database: myapp_development
  hello: *app

test:
  database: myapp_test
  <<: *app

# python代码
import yaml
import os

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

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


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

# 输出:
# {
# 'defaults':
#   {'adapter': 'postgres', 'host': 'localhost'},
# 'development':
#     {'database': 'myapp_development',
#      'hello':
#         {'adapter': 'postgres', 'host': 'localhost'}},
# 'test': {'adapter': 'postgres', 'host': 'localhost', 'database': 'myapp_test'}
# }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢同学.

但行好事 莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值