我需要在yaml文件中使用环境变量“PATH”,该文件需要用脚本解析。
这是我在终端上设置的环境变量:
$ echo $PATH
/Users/abc/Downloads/tbwork
这是我的样品
---
Top: ${PATH}/my.txt
Vars:
- a
- b
当我用脚本解析这个yaml文件时,我看不到PATH
变量的实际值。
这是我的剧本:
import yaml
import os
import sys
stream = open("sample.yml", "r")
docs = yaml.load_all(stream)
for doc in docs:
for k,v in doc.items():
print k, "->", v
print "\n",
输出:
Top -> ${PATH}/my.txt
Vars -> ['a', 'b']
预期产量为:
Top -> /Users/abc/Downloads/tbwork/my.txt
Vars -> ['a', 'b']
如果我做错了,有人能帮我找出正确的方法吗?
PY yaml库默认情况下不解析环境变量。您需要定义一个隐式解析器,它将找到定义环境变量的正则表达式并执行一个函数来解析它。
你可以通过
yaml.add_implicit_resolver
和yaml.add_constructor
来完成。在下面的代码中,您将定义一个解析器,它将匹配YAML值中的${env variable},并调用函数path_构造函数来查找环境变量。如果您不想修改全局/默认yaml加载程序,这里有一个替代版本,它确实使用了一个新的加载程序类。
更重要的是,它正确地替换了不只是环境变量的插值字符串,例如
path/to/${SOME_VAR}/and/${NEXT_VAR}/foo/bar
相关问题 更多 >
编程相关推荐