Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从纯python创建yaml文件?_Python_Yaml_Pyyaml - Fatal编程技术网

如何从纯python创建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文件中后,我得到以下结果:

来自

原始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