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