https://www.likecs.com/show-307121535.html
读取数据使用load函数
读取多组数据使用,yaml.load_all()方法,返回结果为一个生成器,需要使用for循环语句获取每组数据
result = yaml.load(f.read(), Loader=yaml.FullLoader)
Loader=yaml.FullLoader参数不写的话对结果不会有影响,但运行时会出现警告信息。
假设有mydata.yaml文件,内容如下:
#正常数据
ip: 127.0.0.1
port: 3306
#嵌套数据
data:
user: root
password: 123456
userdb: ~
#列表数据
data2:
- maker
- 28
- 98.9
#元祖数据
地区: !!python/tuple
- 深圳
- 上海
读取代码如下:
import yaml
with open('./mydata.yaml','r',encoding='utf-8') as f:
res = yaml.load(f.read(), Loader=yaml.FullLoader)
print(res)
print(type(res))
结果如下:
{'ip': '127.0.0.1', 'port': 3306, 'data': {'user': 'root', 'password': 123456, 'userdb': None}, 'data2': ['maker', 28, 98.9], '地区': ('深圳', '上海')}
<class 'dict'>
多组数据读取
mydatas.yaml内容如下:
data:
- ip: 127.0.0.1
port: 3300
- ip: 192.168.33.44
port: 2789
- ip: 10.25.33.24
port: 2020
id: 1
环境: 开发
---
data:
- ip: 127.0.0.1
port: 3300
- ip: 192.168.33.45
port: 2789
- ip: 10.25.33.25
port: 2020
id: 2
环境: 测试
代码如下:
import yaml
with open('./mydatas.yaml', 'r', encoding='utf-8') as f:
res = yaml.load_all(f.read(), Loader=yaml.FullLoader)
print(res)
for i in res:
print(i)
结果如下:
<generator object load_all at 0x000002615CACF9E0>
{'data': [{'ip': '127.0.0.1', 'port': 3300}, {'ip': '192.168.33.44', 'port': 2789}, {'ip': '10.25.33.24', 'port': 2020}], 'id': 1, '环境': '开发'}
{'data': [{'ip': '127.0.0.1', 'port': 3300}, {'ip': '192.168.33.45', 'port': 2789}, {'ip': '10.25.33.25', 'port': 2020}], 'id': 2, '环境': '测试'}