如何从 yaml 生成的字典中动态打印信息?
How to print information dynamically from yaml generated dictionary?
也许我有一个小问题,但我无法通过。我是 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",并且还能够动态处理。
如果您有更清洁的解决方案,请告诉我。
提前致谢!
也许我有一个小问题,但我无法通过。我是 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",并且还能够动态处理。
如果您有更清洁的解决方案,请告诉我。 提前致谢!