配置文件
1、配置文件
需求:动态改动文件名与格式
1、配置文件
- 视为程序配置参数和初始化设置的文件
- 通常以"ini,conf,cfg,yaml"作为后缀结尾的文件
2、配置文件的作用
- 通过配置文件使得代码中的参数根据配置文件动态调整
- 而不用直接修改代码
3、常见的配置文件
-
3.1 ini,conf,cfg
-
通常由 section(节),键(key),值(value),格式如下:
"[section]
key1=value1
key2=value2" -
3.2、yaml文件
本质上是一种标记语言,可以表示更复杂的数据结构
基本语法
大小写敏感
使用缩进表示层级
不允许使用Tab键作为缩进,用空格
'#' 表示注释
-
三种数据结构
1、对象:键值对的集合,映射,hash,字典
2、数组:序列,列表
3、标量:单个的值 -
3.2.1、对象
"key: value"
-
3.2.2、数组
"- 运动 - 阅读"
-
3.2.3、组合结构
name:xinlan age:18 hobby: - 阅读 - 运动
相当于py里的字典
{
"name":"xinlan",
"age":18,
"hobby":[
"阅读",
"运动"
]
}
-
3.2.4、标量
-
字符串
普通字符串不需要加引号 name:心蓝 如果字符串中包含了特殊字符,如空格,需要引号包裹 name: 'kobe bryant'
-
布尔值
true,false
-
整数
-
浮点数
-
null
‘-’表示
-
时间
xx:xx:xx
-
日期
yyyy-mm-dd</font>
4、解析配置文件
-
4.1、解析ini文件
使用conifgparser 系统库
-
4.2、解析yaml文件
使用第三方库pyyaml
案例
config.ini文件
[log]
file=py34
debug=false
format='%(name)s:%(levelname)s:%(asctime)s:%(message)s'
[mysql]
host=127.0.1
user=root
password=123456
解析ini的文件
from configparser import ConfigParser
# 实例化
config = ConfigParser()
# 读取配置文件
config.read(r'config.ini')
# 读取所有的节的名称
print(config.sections())
# 返回某个节下的所有的配置名称
print(config.options("log"))
# 获取某个节下的值
print(config.get("log","file"))
print(type(config.get("log","file")))
# ConfigParser类之典对象,可以像字典一样取值
print(config['mysql']['host'])
# 默认情况下,通过字典索引的的语法取值,返回的都是字符串
print(config['mysql']['password'],type(config['mysql']['password']))
print(config['log']['debug'],type(config['log']['debug']))
# 获取布尔值
# 值只能是1、true,2,False
res = config.getboolean('log','debug')
print(res,type(res))
# 获取数值
# 格式也要正确
res = config.getint('mysql','password')
print(res,type(res))
config.yaml文件
log:
file: py34
debug: false
format: '%(name)s:%(levelname)s:%(asctime)s:%(message)s'
mysql:
host: 127.0.1
user: root
password: 123456
解析yaml文件
import yaml
# 整个解析成一个大字典
with open('config.yaml','r',encoding='utf-8') as f:
config = yaml.load(f,Loader=yaml.FullLoader)
print(config)