配置文件

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
    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)

posted @ 2020-11-20 19:15  Old_Arthurㄟ  阅读(452)  评论(0)    收藏  举报