无法解析 yaml 文件 python

Unable to parse yaml file python

我有一个示例 YAML 文件,但我无法使用 PyYAML 库解析它。

setup.yml:

key: HostName
deviceid: port1

Python代码

with open('../configs/setup.yml') as stream:
    try:
        print 'yaml.data ==', yaml.load(stream)
        print 'yaml.data ==', type(yaml.load(stream))
        # print 'yaml.data ==', dict(yaml.load(stream))
        data = yaml.safe_load(stream)
        self.device_id = data['deviceid']
        self.key = yaml.load(stream)['key']
    except yaml.YAMLError as exc:
        print(exc)

yaml.load(stream)类型是Nonetype,我以为应该是字典。

在您使用第一个 load() 读取流后,流中没有更多数据,下一次加载 returns None 并且不会抛出错误(例如结束流)..

您可以做的是:

import yaml

with open('../configs/setup.yml') as stream:
    print 'yaml.data ==', yaml.load(stream)
    stream.seek(0, 0)
    print 'yaml.data ==', type(yaml.load(stream))
    # print 'yaml.data ==', dict(yaml.load(stream))
with open('../configs/setup.yml') as stream:
    data = yaml.safe_load(stream)
    device_id = data['deviceid']
    key = data['key']

或者从一开始就将加载的文档存储在数据中。由于之前的错误,我删除了对 self. 的引用,你从来没有找到那个未定义的变量。

但是,几乎从来不需要使用 PyYAML 的 load()(这里确实如此)它不安全并且不会就此向您发出警告.对于不受控制的数据,它可以擦除您的光盘,或者更糟。