1 回答
TA贡献1835条经验 获得超7个赞
如果您知道要遍历的所有键,则可以执行以下操作:
import sys
import yaml
key = sys.argv[1]
with open("config.yml") as f:
data = yaml.safe_load(f)
n = key.count('.')
parts = key.split('.')
res = None
i = 0
while i <= n:
try:
if not res:
res = data[parts[i]]
else:
res = res[parts[i]]
except (yaml.YAMLError, KeyError) as exc:
print ("Error: key not found in YAML")
res = None
i = i + 1
if res:
print(res)
测试
~# python search_yaml.py server.repo.port
~# 1234
~# python search_yaml.py server.servername
~# myServer14
这可能有错误,我编写代码只是为了看看是否可以在没有第三方工具的情况下轻松完成。
适用于 YAML 的 CLI 应用程序
浏览本次作品的您可能还对程序感兴趣yq。实际上有两个同名的程序,一个是用 Go 实现的,另一个是基于 Python 的(可能比上面的代码更复杂):-)
基于Go的yq. yq您可以从 GitHub 版本安装提供的静态编译的二进制文件,也可以yum使用商业GetPageSpeed 存储库进行安装,以便以后轻松更新:
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum -y install yq
然后你可以简单地:
~# yq read config.yml server.servername
~# myServer14
添加回答
举报