python3 pyyaml使用 读取yaml配置

安装:

pip install pyyaml

 

导入:

import yaml

 

使用:

普通的yaml文件加载使用:基本上,这样用就够了。

yaml.load(open(filename), Loader=yaml.FullLoader)

yaml.load_all(open(filename), Loader=yaml.FullLoader)

 

 

yaml加载完数据到python中,为{} 或者是list

如果是load_all加载出来的,是一个生成器,使用list(yaml.load_all(...)) 可以得到一个列表。

 

load 和load_all的区别:

load会把一个文件视为一个yaml

load_all会把一个yaml文件中的重复的部分视为一个yaml。

如以下数据,load加载为一个dict, load_all加载,会分为两个dict的generate。

 

password: by: "link text" locator: "aaa" password2: by: "link text" locator: "aaa" #结果不同如下 load: {'password': {'by': 'link text', 'locator': 'aaa'}, 'password2': {'by': 'link text', 'locator': 'aaa'}} load_all: [{'password': {'by': 'link text', 'locator': 'aaa'}, 'password2': {'by': 'link text', 'locator': 'aaa'}}]

 

其他:

pyyaml还提借了对应load相应的dump方法,有dump, dump_all。与load操作相反。

pyyaml另外还支持直接把yaml数据加载到类中。不过这有一个问题,需要把类路径在文档中指明。我觉得这对于配置文件来说,个人觉得不是一个好选择,我不打算用它。

 

加载类例子。

yaml.load(""" ... --- !Monster ... name: Cave spider ... hp: [2,6] # 2d6 ... ac: 16 ... attacks: [BITE, HURT] ... """)

 

 

官方文档

https://pyyaml.org/wiki/PyYAMLDocumentation

 

关于pyyaml loader:

https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

如果不指定loader,会在运行时报错。为了让它不报错,而且当代码都是自己写的时候,可以直接使用yaml.FullLoader来阻止它报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值