第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 PyYAML 從 Bash 查找 YAML 值

如何使用 PyYAML 從 Bash 查找 YAML 值

喵喔喔 2023-10-18 15:50:50
我正在測(cè)試在 RHEL7 環(huán)境中使用 PyYAML v3.12 來(lái)解析中等復(fù)雜的 YAML 配置文件內(nèi)容的可行性,方法是向其提供密鑰并獲取密鑰對(duì)值。該查詢看起來(lái)像這樣python my_yaml_search.py key_to_search并打印回value,例如:所需的 bash 命令:python search_yaml.py $servername所需的響應(yīng)(僅值,而不是鍵值):myServer14到目前為止,我已經(jīng)創(chuàng)建了以下 .py:import sysimport yamlkey = sys.argv[1]with open("config.yml") as f:    try:        data = yaml.safe_load(f)        for k, v in data.items():            if data[k].has_key(key):                print data[k][v]        except yaml.YAMLError as exc:        print "Error: key not found in YAML"配置.yml:---server:    servername: myServer14    filename: testfile.zip    location: http://test-location/1.com    repo:        server_name_fqdn: server.name.fqdn.com        port: 1234到目前為止,運(yùn)行python search_yaml.py $servername會(huì)產(chǎn)生list index out of range; python search_yaml.py servername什么也不產(chǎn)生。我是 Python/PyYAML 的新手,所以我認(rèn)為我可能錯(cuò)誤地向程序傳遞了一個(gè)變量,并且 sys 可能不是我需要的 Python 庫(kù),但是我在如何正確執(zhí)行此操作方面遇到了障礙 -任何輸入都會(huì)挽救我的理智。
查看完整描述

1 回答

?
qq_花開(kāi)花謝_0

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


查看完整回答
反對(duì) 回復(fù) 2023-10-18
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)