我有yml文件
- id: id1
memberPort: 8080
instance:
name: test
id: q1
site: us
dns: dns1
ip: 1p2
state: available
- id: id2
memberPort: 8080
instance:
name: test2
id: q2
site: us
dns: dns2
ip: ip1
state: available我想通过这个迭代得到ip打印ip1和ip2的vauls
试着看看这些例子,得到了下面的代码
import yaml
f = open('file.yml')
yaml_file = yaml.safe_load(f)
for entry in yaml_file["id"]:
print yaml_file[id]["ip"])但这不起作用
知道怎么修复这条蟒蛇吗谢谢
发布于 2020-10-26 15:06:33
您将阅读和迭代条目与评估条目混为一谈。将两者分开,如下所示:
import yaml
f = open('/tmp/test.yaml')
yaml_file = yaml.safe_load(f)
for entry in yaml_file:
print(entry)
print("ID: " + entry['id'])
print("IP: " + entry['instance']['ip'])结果:
{'id': 'id1', 'memberPort': 8080, 'instance': {'name': 'test', 'id': 'q1', 'site': 'us', 'dns': 'dns1', 'ip': '1p2', 'state': 'available'}}
ID: id1
IP: 1p2
{'id': 'id2', 'memberPort': 8080, 'instance': {'name': 'test2', 'id': 'q2', 'site': 'us', 'dns': 'dns2', 'ip': 'ip1', 'state': 'available'}}
ID: id2
IP: ip1发布于 2020-10-26 15:10:24
一旦行yaml_file = yaml.safe_load(f),yaml_file的数据类型就是list。
您所要做的就是迭代它,就像:
for entry in yaml_file:
print(entry['instance']['ip'])https://stackoverflow.com/questions/64539628
复制相似问题