配置文件

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)
posted @ 2020-11-20 19:15  Old_Arthurㄟ  阅读(279)  评论(0编辑  收藏  举报