有没有办法在转储到 yaml 文件后删除 !!int ?
电流输出:
例外:
代码:
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='"')
您得到
!!int
,因为您正在转储整数,但强制输出全部为双引号标量。如果没有这个,读取输出的 YAML 解析器会认为它需要加载一个字符串。
有了这些知识,简单的解决方案是在转储之前遍历这些值并将它们转换为字符串:
servers.append({k, str(v) for k, v in server._asdict().items())
请注意,至少自 2006 年 9 月起,包含 YAML 文档的文件的官方推荐扩展名一直是
.yaml
。