在下面的代码中我创建了net_plan_dict
变量字典并将其转换为YAML格式文件。
在字典里我有一个叫做addresses
这是一个由三个元素组成的数组。
创建YAML文件后,这三个数组元素没有放置在addresses
field :
import yaml
net_plan_dict = {
'networking': {
'addresses': ['192.168.1.1', '192.168.1.2', "192.168.1.3"],
'gateway4': '192.168.121.1'
}
}
with open("new.yaml", "w") as f:
yaml.dump(net_plan_dict, f)
上述代码的输出如下(在下面的文件中,IP不在地址下方,并且没有空格或缩进)。
新的.yaml:
networking:
addresses:
- 192.168.1.1 <-------- does not have indent
- 192.168.1.2
- 192.168.1.3
gateway4: 192.168.121.1
但我的目标是获取此输出文件(当 ips 位于地址字段下时如何创建此文件):
networking:
addresses:
- 192.168.1.1
- 192.168.1.2
- 192.168.1.3
gateway4: 192.168.121.1
PyYAML 的dump()
没有精细的控制来有不同的缩进
映射(2 个位置)和序列(4 个位置),也不能抵消序列指示符(-
) 之内
(序列)缩进的空间)。
如果你想对你的输出进行这种控制,你应该使用ruamel.yaml
(免责声明:我是该包的作者):
import sys
import ruamel.yaml
net_plan_dict = {
'networking': {
'addresses': ['192.168.1.1', '192.168.1.2', "192.168.1.3"],
'gateway4': '192.168.121.1'
}
}
yaml = ruamel.yaml.YAML()
yaml.indent(mapping=2, sequence=4, offset=2)
yaml.dump(net_plan_dict, sys.stdout)
这使:
networking:
addresses:
- 192.168.1.1
- 192.168.1.2
- 192.168.1.3
gateway4: 192.168.121.1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)