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
添加回答
舉報