1 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您知道要遍歷的所有鍵,則可以執(zhí)行以下操作:
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)
測(cè)試
~# python search_yaml.py server.repo.port
~# 1234
~# python search_yaml.py server.servername
~# myServer14
這可能有錯(cuò)誤,我編寫(xiě)代碼只是為了看看是否可以在沒(méi)有第三方工具的情況下輕松完成。
適用于 YAML 的 CLI 應(yīng)用程序
瀏覽本次作品的您可能還對(duì)程序感興趣yq。實(shí)際上有兩個(gè)同名的程序,一個(gè)是用 Go 實(shí)現(xiàn)的,另一個(gè)是基于 Python 的(可能比上面的代碼更復(fù)雜):-)
基于Go的yq. yq您可以從 GitHub 版本安裝提供的靜態(tài)編譯的二進(jìn)制文件,也可以yum使用商業(yè)GetPageSpeed 存儲(chǔ)庫(kù)進(jìn)行安裝,以便以后輕松更新:
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum -y install yq
然后你可以簡(jiǎn)單地:
~# yq read config.yml server.servername
~# myServer14
添加回答
舉報(bào)