python:配置文件

222 阅读3分钟

1/什么是配置文件

项目中使用的常量,我们把它收集放在一个文件中,这就是配置文件。
配置文件在项目中是非常必要的,它避免了项目中文件对常量的分散使用,以及重复定义,
让常量可以统一修改,避免造成修改不全面的问题。

常用的配置文件后缀是.ini/.conf/.py,当然还有使用.json、.txt的,推荐使用常用的.ini/.py,配置文件的名字一般是config便于理解和使用。

.ini文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置;
.py的配置文件,在python项目中是作为一个包导入,严格来说不是配置文件,而是扩展包。

下面将介绍两类配置文件的使用,一类是.ini、.txt,另一类是.py。

.ini配置文件

.ini和.txt配置文件使用方法是一致的,只是一个后缀的区别,这里以.ini配置文件来介绍,这类配置文件我们使用内置configparser库来使用,它可以实现配置文件的写入、更新、删除、读取等操作非常方便,建议使用这种方式。

# 注意
   如果配置文件中含有账户,密码等机密的信息,则不能将配置文件包含在项目中一起提交到git中,这样机密信息会暴露

新建一个config.ini的配置文件内容如下,其中[]中的是section节点,该节点下的等式是option即键=值
    [wanxiang]
    name = admin
    host = 255.255.255.0
    proxy = 6037
    password = 123456
    pool = true
    time = 3
    
    [dp]
    name = admin
    host = 255.255.255.0
    proxy = 6037
    password = 123456
    pool = true
    time = 3
    
  <1> 获取文件中所有的section
      一个配置文件中可以有多个配置,如数据库相关的配置,邮箱相关的配置,每个section由[]包裹,即[section]),并以列表的形式返回
      config.sections()  # 获取section节点,节点一般都是用[]括起来,
      ["wanxiang","dp"]

  <2> 读取某个指定section,获得其下面的kv
      config.options("wanxiang")  # 获取指定section 的options即该节点的所有键
      ['name', 'host', 'proxy', 'password', 'pool', 'time']

  <3> 获得指定section下的指定k的值
      config.get("wanxiang","name")  # 获取指定section下的options
      'admin'

  <4> 在配置文件中,所有的value都是字符串,所以我们需要根据不同的k,转换不同数据类型的v
      # 转换为int型
      config.getint("wanxiang","proxy")  # 将获取到值转换为int型
      6037
      config.getboolean("wanxiang","pool")  # 将获取到值转换为bool型
      True
      config.getfloat("wanxiang","time")  # 将获取到值转换为浮点型
      3.0
  <5> 读取指定section下的所有健值对
      config.items("wanxiang")  # 获取section的所用配置信息
      [('name', 'admin'), 
       ('host', '255.255.255.0'), 
       ('proxy', '6037'), 
       ('password', '123456'), 
       ('pool', 'true'), ('time', '3')]
  <6> 修改value
      config.set("wanxiang","name","root")  
      config.get("wanxiang","name") 
      'root'
  <7> # 是否存在该section
      config.has_section("wanxiang")  
      True
  <8> # 是否存在该option
      config.has_option("wanxiang", "password")  
      True
  <9> 添加新的section,并且在该section下添加新的kv
      config.add_section("redis")  # 添加section节点
      config.set("redis","name","redis_admin")  # 设置指定section 的options
      config.items('redis')
      [('name', 'redis_admin')]


实例:

    import configparser  # 导入配置文件需要的库configparser

    config = configparser.ConfigParser()  # ConfigParser是configparser中的一个类,这条代码是类的实例化
    config.read("绝对路径/config.ini")  # 配置文件的绝对路径,这条代码是类的实例化之后,调用类中的read()方法

    user = config.get("wanxiang","user")