如何从纯python创建yaml文件?
来自 原始YAML文件包含以下内容如何从纯python创建yaml文件?,python,yaml,pyyaml,Python,Yaml,Pyyaml,来自 原始YAML文件包含以下内容 # tree format treeroot: branch1: name: Node 1 branch1-1: name: Node 1-1 branch2: name: Node 2 branch2-1: name: Node 2-1 使用yaml.load()从文件中加载内容,并将其转储到新的yaml文件中后,我得到以下结果:
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1
branch2:
name: Node 2
branch2-1:
name: Node 2-1
使用yaml.load()
从文件中加载内容,并将其转储到新的yaml文件中后,我得到以下结果:
# tree format
treeroot:
branch1:
branch1-1: {name:Node 1-1}
name: Node 1
branch2:
branch2-1: {name: Node 2-1}
name: Node 2
直接从纯python构建YAML文件的正确方法是什么?我不想自己写字符串。我想建立字典和列表
部分
dataMap = {'treeroot':
{'branch2':
{'branch1-1':
{'name': 'Node 1-1'}, # should be its own level
'name': 'Node 1'
}
}
}
好的。我只是仔细检查了文件。我们在
yaml.dump(数据,可选参数)的末尾需要这个
解决办法是这样
yaml.dump(dataMap, f, default_flow_style=False)
其中dataMap是源yaml.load()
,f是要写入的文件。您的第一个和第二个列表是等效的,只是不同的符号
请参阅:假设您使用的是PyYAML,您显示的输出是而不是yaml.dump()
生成的内容的复制粘贴,因为它包含注释,PyYAML不会编写这些内容
如果您希望保留该注释,以及文件中的密钥顺序(将文件存储在修订控制系统中时很好),请使用\:
它可以准确地获取输入:
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1 # should be its own level
branch2:
name: Node 2
branch2-1:
name: Node 2-1
这是使用增强版的PyYAML完成的,我是该版本的作者。您是否在问如何保证获得与中相同的文件?如果是这样的话,就不能保证了,因为字典没有预定义的顺序。@Nate对,这是我的意图。我明白。我编辑并提供了部分结构。Yaml转储无法将内部{name:Node 1-1}寄生到另一个级别…此转储不会写入#树格式
注释。
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1 # should be its own level
branch2:
name: Node 2
branch2-1:
name: Node 2-1