无法分析python中的yaml文件

无法分析python中的yaml文件,yaml,pyyaml,Yaml,Pyyaml,我有一个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示例文件,无法使用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()读取流后,流中没有更多数据,下一个加载返回
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()
(这里当然是这样)它是不安全的,并且不会警告您。对于不受控制的数据,它可能会擦除光盘,甚至更糟