鉴于test.yml:
Step1:
input: dd if=/dev/urandom of=/dev/null count=8192 bs=8192
output: 8192+0 records in
output: 8192+0 records out
加上python脚本来阅读它:
import yaml
stream = open("test.yml", 'r')
Steps = yaml.load(stream)
print(Steps)
但是它只返回最后一个输出:
{'Step1': {'output': '8192+0 records out', 'input': 'dd if=/dev/urandom of=/dev/null count=8192 bs=8192'}}
无论数量多少,我如何获得所有输出值?
答案 0 :(得分:1)
使用相同名称的多个键无法执行您想要的操作。 YAML关联数组(如Python字典)必须具有唯一键,并且必须忽略重复键(可能产生警告)或被视为错误。请参阅YAML specification:
两个相等的键出现在同一个映射节点中是错误的。在这种情况下,YAML处理器可能会继续,忽略第二个键:值对并发出适当的警告。< / p>
强调我的。
Python词典的行为大致相同;键值对必须是唯一的。 PyYAML解析器以与Python字典相同的方式处理上述情况;最后一个条目获胜。
ticket in the PyYAML tracker要求在这种情况下发出警告或例外。
为您的步骤提供唯一键,或使用值列表代替:
Step1:
input: dd if=/dev/urandom of=/dev/null count=8192 bs=8192
output:
- 8192+0 records in
- 8192+0 records out