文章目录
一、介绍与安装
1.yaml的介绍
Yaml是一种所有编程语言可用的友好的数据序列化标准。语法和其他高阶语言类似,并且可以简单表达字典、列表和其他基本数据类型的形态。
2.yaml格式作为文件的配置格式
yaml格式作为文件的配置格式
yaml支持注释
不必强求逗号括号等符号
通过缩进来区分层级,视觉上清晰很多
3.yaml的安装
pip install pyyaml
二、基本操作
案例:
字典{"name": "test_yaml", "result", "success"}
写成Yaml
的形式,并输出结果
字典里的键值对用"∵"分隔
yaml格式 在:后面一定要加个空格,不然会报错;
字典直接写key和value,每一个键值对占一行。
此文件名为:yaml_demo.py
"""
#1、创建yaml格式文件
#2、读取这个文件
#3、输出这个文件
"""
#2、读取这个文件
#1)、导入yaml包
import yaml
#2)、打开文件
with open("./data.yaml","r") as f:
#3)、使用yaml读取文件
r=yaml.safe_load(f)
#3、输出这个文件的内容
print(r)
此文件名为:data.yaml
#字典
name: "test_yaml"
result: "sucess"
#列表
#["a","b","c"]
#1.字典嵌套字典
{person1:{"name":"xiaoming","age":"18"},
person2:{"name":"xiaohong","age":"20"}
}
person1:
name: xiaoming
age: 18
person2:
name: xiaohong
age: 20
#通过空格来表示字典,通过换行表示嵌套
#2.字典嵌套列表
{person:["a","b","c"]}
person:
- "a"
- "b"
- "c"
#通过-加上空格来表示列表,通过换行表示嵌套
#3.列表嵌套列表
#[["a","b","c"],["1","2","3"]]
-
- "a"
- "b"
- "c"
-
- "1"
- "2"
- "3"
#4.列表嵌套字典
[{"username1":"test1"},{"passward1":"111","username2":"test2"}]
- username1: "test1"
- passward1: "111"
username2: "test2"
#同一级别下需要换行
#读取多个文档
---
"用户名称1": "test123"
"密码": "132456"
---
"用户名称1": "test456"
"密码": "132456"
三、读取文件
3.1单个文档
#1、读取单个文档
#1)、导入yaml包
import yaml
#2)、打开文件
#若打印出来的汉字是乱码,在open后面加encoding="utf-8"即可解决
with open("./data.yaml","r",encoding="utf-8") as f:
#打开的文件在二、基本操作
#3)、使用yaml读取文件
r=yaml.safe_load(f)
#2、输出这个文件内容
print(r)
3.2多个文档
#读取多个文档
#1、编辑或修改data.yml
#2、yaml读取方法,all
with open("./data.yaml","r",encoding="utf-8") as f:
r=yaml.safe_load_all(f)
#3、循环打印
for i in r:
print(i)
四、配置文件设置
4.1yaml封装
import os
import yaml
#1、创建类
calss YamReader:
#2、初始化,文件是否存在
def __init__(self,yamlf):
if os.path.exists(yamlf):
self.yamlf=yamlf
else:
raise FileNotFoundError("文件不存在")
self._data=None
#3、yaml读取
def data(self):
if not self._data:
with open(self.yamlf,"rb") as f:
self._data=yaml.safe_load(f)
return self._data
4.2配置文件conf.yml
此文件名为:conf.yml
BASE:
test:
url: "http://211.103.136.242:8064"
此文件名为:Conf.py
import os
import YamlUtil import YamlReader
#1、获取项目基本目录
#获取当前项目的绝对路径
current = os.path.abspath(__file__)
#print(current)查看测试路径(全部路径)
BASE__DIR=os.path.dirname(os.path.dirname(current))
#print(BASE_DIR)查看测试路径
#定义config目录的路径
_cofig_path=BASE_DIR+os.sep+"config"
#定义conf.yml文件的路径
_config_file=_config_path+os.sep+"cof.yml"
def get_config_path():
return _config_path
def get_config_file():
return _config_file
#2、读取配置文件
#创建类
class ConfigYaml:
#初始yaml读取配置文件
def __init__(self):
self.config=YamlReader(get_config_file)
#定义方法获取需要信息
def get_conf_url(self):
return self.config["BASE"]["test"]["url"]
if __name__=="__main__":
coonf_read=ConfigYaml()
print(conf_read.get_conf_url())
#3、
#4、