yaml中变量替换
- 可以使用重复的节点,“&”和“*”配对使用,仅能做普通的替换不能拼接
- 使用&为变量类似于起了个别名,在后续可以使用*进行使用
- 示例
dec: "预稿库列表页数据查询"
a: &a_path "/api/v1/opt/material/"
b: *a_path
读取yml文件时使用的是:
data = yaml.load(file_data, Loader=yaml.FullLoader)
读取yml文件结果:
{'dec': '预稿库列表页数据查询', 'a': '/api/v1/opt/material/', 'b': '/api/v1/opt/material/'}
yaml中进行变量拼接
- 场景:若想在yml文件中进行变量的拼接,使b的值为 "/api/v1/opt/material/0"。
- 使用os.path.join进行拼接
- 示例:
---
dec: "预稿库列表页数据查询"
a: &a_path "/api/v1/opt/material/"
url: !!python/object/apply:os.path.join [*a_path, "0"]
读取yml文件结果:
{'dec': '预稿库列表页数据查询', 'a': '/api/v1/opt/material/', 'url': '/api/v1/opt/material/0'}
使用中遇到问题
- yaml中进行变量拼接时报错
-
使用os.path.join时遇到报错:yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/object/apply:os.path.join'
-
解决方案:将读取yaml文件的语句改为 data = yaml.unsafe_load(file_data)