簡體   English   中英

如何閱讀使用python動態更新YAML

[英]How to read Dynamically updating YAML with python

我有yaml文件,看起來像這樣。

---
env:
  credentials:
    endpoint: "value"
    username: "value"
    tenant: "value"
    password: "value"

  ld_a:
    network:
        subnet-name:
            - sub1
        ld_filename:
            - ld1.xml
        fd_filename:
            - fd1.xml
            - fd2.xml

  ld_b:
    network:
        subnet-name:
            - sub2
        ld_filename:
            - ld2.xml
        fd_filename:
            - fd1.xml
            - fd2.xml

用戶可以隨時使用ld_c或后續標簽更新YAML或刪除任何標簽。

到目前為止,我正在檢查dict中的ld_a並處理嵌套鍵,值(如下所示)。

with open(r'C:\file.yaml', 'r') as fd:
    data = yaml.load(fd)

items = data.get('env')
for descriptor, value in items.iteritems():
    if descriptor == 'credentials':
        tenant = value.get('tenant')
        username = value.get('username')
        password = value.get('password')
        endpoint = value.get('endpoint')


    if descriptor == 'ld_a':
        for descriptor in value.viewvalues():
            for user_networks in descriptor.get('subnet-name'):
                get_network_details(neutron, user_networks)

但是當用戶要添加/刪除鍵時,例如ld_c 我們應該如何在python中處理這個問題。

以我的基本知識,這是您的答案:

import re

pattern = re.compile(r"ld_[a-z]")

if pattern.match(descriptor):
    for descriptor in value.viewvalues():
        for user_networks in descriptor.get('subnet-name'):
            get_network_details(neutron, user_networks)

基本上,您在descriptor上執行正則表達式,它匹配每個ld_字符,后跟一個從a到z的字符(a,b,c ...等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM