前言
基础的配置数据我们可以用.ini文件、.json文件等来存放,当然yaml也是可以的,并且使用起来更方便,本篇讲解yaml使用
安装
python中操作yaml文件的库为pyyaml模块
pip install pyyaml 直接安装(如下图,安装完成)
yaml文件编写的基础规则
1)大小写敏感
2)使用缩进表示层级关系
3)缩进时不允许使用Tab,只允许使用空格,空格数目不重要,只要相同层级的元素左对齐即可
4)# 表示注释
5)默认映射为一个字典格式,加上“-”表示映射为一个列表
6)yaml基本类型包括字符串、整型、浮点型、布尔型、null、时间、日期
yaml使用(load读取文件)
【读取数据为字典格式】
test_dict_data.yaml
# test_dict_data.yaml 存放用户信息,打印出来后会是一个字典 id : 001 name : suner001 pwd : suner123 age : 20 addr : jiangsu
read_yaml.py
# coding:utf-8 # read_yaml.py 读取yaml文件中的数据并打印结果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回当前文件的上层目录 yaml_path = os.path.join(cur_path,"test_dict_data.yaml") # 拼接yaml文件所在路径 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file) print(yaml_result)
执行时,虽然打印了但是有警告信息,提示缺少加载器
百度解决方法,load函数后增加Loader参数,指定Loader=yaml.FullLoader
完整代码
# coding:utf-8 # read_yaml.py 读取yaml文件中的数据并打印结果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回当前文件的上层目录 yaml_path = os.path.join(cur_path,"test_dict_data.yaml") # 拼接yaml文件所在路径 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file,Loader=yaml.FullLoader) print(yaml_result) # 执行结果:{'id': 1, 'name': 'suner001', 'age': 20, 'addr': 'jiangsu', 'pwd': 'suner123'}
【读取数据为列表格式】
test_list_data.yaml
# test_list_data.yaml 存放多个用户信息,打印结果为一个列表,里面包含三条字典格式的数据 - id : 001 name : suner001 pwd : suner123 age : 20 addr : jiangsu - id : 002 name : suner002 pwd : suner123 age : 21 addr : shanghai - id : 003 name : suner003 pwd : suner123 age : 22 addr : beijing
read_yaml.py
# coding:utf-8 # read_yaml.py 读取yaml文件中的数据并打印结果 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回当前文件的上层目录 yaml_path = os.path.join(cur_path,"test_list_data.yaml") # 拼接yaml文件所在路径 with open(yaml_path,encoding="UTF-8") as yaml_file: yaml_result = yaml.load(yaml_file,Loader=yaml.FullLoader) print(yaml_result)
执行结果
yaml使用(dump写入文件)
test_data.yaml 为空文件,会将数据写到此文件中去
import_yaml.py
# coding:utf-8 # import_yaml.py 写入yaml文件中的数据 import yaml import os cur_path = os.path.dirname(os.path.realpath(__file__)) # 返回当前文件的上层目录 yaml_path = os.path.join(cur_path,"test_data.yaml") # 拼接yaml文件所在路径 num_list = list(range(10)) with open(yaml_path,"w",encoding="UTF-8") as yaml_file: yaml.dump(num_list,yaml_file) # 参数为写入的数据以及写入的文件流
执行后,打开test_data.yaml文件查看
至此,简单的yaml文件的读取和写入完成