小编典典

如何将YAML文件解析/读入Python对象?

python

如何将YAML文件解析/读入Python对象?

例如,此YAML:

Person:
  name: XYZ

对于此Python类:

class Person(yaml.YAMLObject):
  yaml_tag = 'Person'

  def __init__(self, name):
    self.name = name

我正在使用PyYAML。


阅读 189

收藏
2020-12-20

共1个答案

小编典典

如果您的YAML文件如下所示:

# tree format
treeroot:
    branch1:
        name: Node 1
        branch1-1:
            name: Node 1-1
    branch2:
        name: Node 2
        branch2-1:
            name: Node 2-1

并且您已经这样安装PyYAML

pip install PyYAML

Python代码如下所示:

import yaml
with open('tree.yaml') as f:
    # use safe_load instead load
    dataMap = yaml.safe_load(f)

变量dataMap现在包含带有树数据的字典。如果dataMap使用PrettyPrint打印,则会得到类似以下内容的信息:

{'treeroot': {'branch1': {'branch1-1': {'name': 'Node 1-1'},
    'name': 'Node 1'},
    'branch2': {'branch2-1': {'name': 'Node 2-1'},
    'name': 'Node 2'}}}

因此,现在我们已经了解了如何将数据获取到我们的Python程序中。保存数据同样简单:

with open('newtree.yaml', "w") as f:
    yaml.dump(dataMap, f)

您有一个字典,现在必须将其转换为Python对象:

class Struct:
    def __init__(self, **entries): 
        self.__dict__.update(entries)

然后,您可以使用:

>>> args = your YAML dictionary
>>> s = Struct(**args)
>>> s
<__main__.Struct instance at 0x01D6A738>
>>> s...

并遵循“将Python字典转换为对象”。

有关更多信息,请访问pyyaml.orgthis

2020-12-20