[英]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.