Pyyaml - Python,省略!!int

问题描述 投票:0回答:1

有没有办法在转储到 yaml 文件后删除 !!int ?

电流输出:

  • “核心”:!!int“4” “磁盘”:!!int“200”

例外:

  • “核心”:“4” “磁盘”:“200”

代码:

Server = namedtuple("Server", "name ip mask gw vlan template cores sockets memory disks")
servers = []
for val in sheet.iter_rows(min_row=2,min_col=2, values_only=True):
    server = Server(val[1],val[2],val[3],val[4],val[5],val[6],val[7],val[8],val[9],val[10])
    servers.append(server._asdict())

vms_spec = {}
vms_spec['vms'] = servers

with open('test.yml','w') as yamlW:
    yaml.safe_dump(vms_spec,yamlW,indent=2,default_style='"')
python yaml tags pyyaml ruamel.yaml
1个回答
0
投票

您得到

!!int
,因为您正在转储整数,但强制输出全部为双引号标量。如果没有这个,读取输出的 YAML 解析器会认为它需要加载一个字符串。

有了这些知识,简单的解决方案是在转储之前遍历这些值并将它们转换为字符串:

servers.append({k, str(v) for k, v in server._asdict().items())

请注意,至少自 2006 年 9 月起,包含 YAML 文档的文件的官方推荐扩展名一直是

.yaml

© www.soinside.com 2019 - 2024. All rights reserved.