无法分析python中的yaml文件
我有一个YAML示例文件,无法使用PyYAML库解析它无法分析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
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()
(这里当然是这样)它是不安全的,并且不会警告您。对于不受控制的数据,它可能会擦除光盘,甚至更糟