yaml是专门用来写项目中的配置文件的模块。配置文件指在一个项目中,对项目进行配置的一些数据,运行过程中一般不会发生变化。
安装yaml
pip install pyyaml
新建一个yaml文件,以yaml或yml为后缀名:
config.yaml内容如下:
#信息
info:
name: 'zhangsan'
age: 18
gender: '男'
#兴趣爱好
hobby:
- playgames
- sleep
语法规则如下:
1.使用缩进表示层级关系
2.缩进最好使用空格,数目不固定,相同层级的元素左侧对齐即可。
3.文件中字符串可以用引号可以不用引号
4.字典的表示以:+空格分开,以键值对的形式
5.列表的表示 以’—’+空格与值分开
python读取yaml文件内容:
#首先导入yaml
import yaml
with open('config.yaml',encoding='utf-8')as f:
conf=yaml.load(f)
print(conf)
结果如下:
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
config=yaml.load(f)
{'info': {'name': 'zhangsan', 'age': 18, 'gender': '男'}, 'hobby': ['playgames', 'sleep']}
但是有一条yaml的警告信息,提示使用默认的方式加载程序是不安全的,所以在读取内容时手动指定加载方式,看下load的源码:
修改代码:
import yaml
with open('config.yaml',encoding='utf-8')as f:
conf=yaml.load(f,Loader=yaml.FullLoader)
print(conf)
结果如下:
#警告信息不会提示
{'info': {'name': 'zhangsan', 'age': 18, 'gender': '男'}, 'hobby': ['playgames', 'sleep']}
但是yaml里面还有其他的Loader,比如SafeLoader,会更加安全:
import yaml
with open('config.yaml',encoding='utf-8')as f:
conf=yaml.load(f,Loader=yaml.SafeLoader)
print(conf)
结果如下:
#警告信息不会提示
{'info': {'name': 'zhangsan', 'age': 18, 'gender': '男'}, 'hobby': ['playgames', 'sleep']}
yaml写入数据:
import yaml
with open('config.yaml','w') as f:
f.dump({'name':'lisi','hobby':['playgames','sleep']},f)
结果:
hobby:
- playgames
- sleep
name: lisi
如果需要引用yaml文件中的数据,读取出来通过操作字典或列表等数据类型获取想要的数据就行。