yaml - 如何从 yaml 生成的字典中动态打印信息?
问题描述
也许我有一个小问题,但我无法解决。我对python比较陌生,如果可以的话,请帮帮我。我有一个用于配置的 yaml 文件。像这样的东西:
---
prod:
app1:
hosts:
- host1
- host2
app2:
hosts:
- host3
- host4
我想用这个 yaml 来生成一个菜单。我的问题是,我无法从数据结构中打印详细信息。据我所知,如果我在 yaml 中阅读,结果将是一本字典。:
def read_env():
with open("env.yaml", 'r') as stream:
try:
data = yaml.load(stream)
return data
except yaml.YAMLError as exc:
print(exc)
finally:
stream.close()
如果我手动打印一些东西,那没关系:
print(data["prod"]["app1"]["hosts"])
这行代码将为我们打印“host1,host2”。我怎么能做这样的事情?
mylist = []
mylist.append(prod)
mylist.append(app2)
mylist.append(hosts)
print(data[mylist])
提前感谢您的回答!
解决方案
好的。我找到了一个简单的解决方案:
mylist = ["prod", "app1", "hosts"]
tmp = ""
for i, item in enumerate(mylist):
if(i == 0):
tmp = data[item]
else:
tmp = tmp[item]
print(tmp)
此代码将返回“host1,host2”,并且还能够动态处理。
如果您有更清洁的解决方案,请告诉我。预先感谢!
推荐阅读
- javascript - 将实时音频从 python 服务器中的 UDP 套接字发送到 javascript 客户端
- docker - 如何克隆我的 Google Cloud 实例,以便我可以下载它并使用 Docker 在本地托管它
- python - Pandas:合并 DataFrame 并插入特定位置,同时保留初始顺序
- html - rem 在移动和桌面设备上?
- denodo - 如何在denodo中声明一个变量?
- python - R 和 Python 中的负二项式 GLM - 系数差异
- android - 我们可以从谷歌平台下载android项目代码吗?
- arrays - 为什么在使用 Array 字段的情况下 Django 不将 [] 或 SELECT 包装到 ARRAY?
- c# - VS 2019 C# intellisense 不建议从解决方案中引用
- python-3.x - 在需要记录分隔符 '\n' 时找到字段分隔符 ','