yaml简介
yaml,一种标记语言,yaml是专门来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观更方便,类似于json格式。
yaml基本语法规则
- 大小写敏感
- 使用缩进表示层级关系爱
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对其即可
- #表示注释,从这个字符一直到行尾都会被解释器忽略
yaml的三种数据结构
- 对象:键值对的集合,又称为映射、哈希、字典
- 数组:一组按次序排列的值,又称为序列、列表
- 纯量:单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期
安装yaml
使用pip命令进行安装:pip install pyyaml
对象(字典dict)
yaml里面的对象,就是python里面的字典数据类型
# yaml文件
user: admin
psw: '123456'
在python里面这样写
{
'user': 'admin'
'psw': '123456'
}
yaml文件中字典嵌套字典
test:
user: admin
psw: '123456'
用python读取yaml文件
先用open方式读取文件数据,再通过load方法转成字典
# python脚本文件
import yaml
import os
# 获叏当前脚本所在文件夹路径
curPath = os.path.dirname(os.path.realpath(__file__))
# 获叏 yaml 文件路径
yamlPath = os.path.join(curPath, "demo.yaml")
# open 方法打开直接读出来
f = open(yamlPath, 'r', encoding='utf-8')
cfg = f.read()
print(type(cfg)) # 读出来是字符串
print(cfg)
d = yaml.load(cfg) # 用 load 方法转字典
print(d)
print(type(d))
# ==============================================
# demo.yaml
# 对象---> 字典
user: admin
psw: '123456'
# 字典嵌套字典
test:
name: zhangsan
age: 12
'''
输出结果:
<class 'str'>
# 对象---> 字典
user: admin
psw: '123456'
# 字典嵌套字典
test:
name: zhangsan
age: 12
{'user': 'admin', 'psw': '123456', 'test': {'name': 'zhangsan', 'age': 12}}
<class 'dict'>
'''
序列(列表list)
yaml文件写一个数组,前面加一个‘-’符号
# yaml 文件
- zhangsan
- lisi
- wangwu
-
#===============
对应的字典
['zhangsan', 'lisi', 'wangwu']
注意:数字读出来的是int或float类型
yaml文件布尔值用true和false表示。对应python中Ture/False
yaml文件中None用’~‘表示,对应python中的None
yaml文件中时间采用 ISO8601 格式
yaml文件中’!!‘两个感叹号,强制转换数据类型(比如:!!str123,那么就是’123’)
# yaml dict嵌套list
user: admin
name: test
num:
- 10
- 15
- 20
#=============
{'user': 'admin', 'name': 'test', 'num': [10, 15, 20]}
# yaml: list嵌套dict
-
name: zhangsan
age: 20
-
name: lishi
age: 18
#=================
[{'name': 'zhangsan', 'age': 20}, {'name': 'lishi', 'age': 18}]