配置文件的好处是,配置成功后不需要每次使用时都指定相应的参数。而且,典型的ini格式的配置文件具有与编程语言无关、 可读性强和易于处理等优点,已经被广泛使用。
一个典型的配置文件包含一到多个章节,每个章节下可以包含一到多个选项。
在Python语言中,标准库的ConfigParser模块用以解析配置文件。ConfigParser模块中包含了一个ConfigParser类。
要解析一个配置文件,首先需要创建一个ConfigParser对象。
例如下面的配置
[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
[logger_alembic]
level = INFO
handlers =
qualname = alembic
ConfigParser中有很多的方法,其中与读取配置文件,判断配置项相关的方法有:
1、sections:返回一个包含所有章节的列表;
2、has_section:判断章节是否存在;
3、items:以元组的形式返回所有选项;
4、options:返回一个包含章节下所有选项的列表;
5、has_option:判断某个选项是否存在;
6、get、 getboolean、 getinit、 getfloat:获取选项的值。
建立iniread.py
import configparser
cf = configparser.ConfigParser()
cf.read('log.ini')
print(cf.sections()) #返回一个包含所有章节的列表
print(cf.has_section('logger_sqlalchemy')) #判断某个章节是否存在
print(cf.options('logger_sqlalchemy')) #返回一个包含章节下所有选项的列表
print(cf.has_option('logger_sqlalchemy','log')) #判断某个章节下的某个选项是否存在
print(cf.get('logger_sqlalchemy','level')) #获取选项的值
输出
['logger_sqlalchemy', 'logger_alembic']
True
['level', 'handlers', 'qualname']
False
WARN
在读取选项的内容时,get方法默认以字符串的形式返回。如果我们需要读取一个整数,则使用getint方法读取;如果我们需要读取一个布尔型的取值,则使用getboolean方法读取。
ConfigParser中有很多的方法,其中与修改配置文件相关的方法有:
1、remove_section:删除一个章节;
2、add_section:添加一个章节;
3、remote_option:删除一个选项;
4、set:添加一个选项;
5、write将ConfigParser对象中的数据保存到文件中。
建立文件iniup.py
import configparser
cf = configparser.ConfigParser()
cf.read(r'D:\pythonexam\test\log.ini')
print(cf.sections()) #返回一个包含所有章节的列表
print(cf.has_section('logger_sqlalchemy')) #判断某个章节是否存在
print(cf.options('logger_sqlalchemy')) #返回一个包含章节下所有选项的列表
print(cf.has_option('logger_sqlalchemy','log')) #判断某个章节下的某个选项是否存在
print(cf.get('logger_sqlalchemy','level')) #获取选项的值
cf.remove_section('logger_sqlalchemy') #删除章节
cf.add_section('logger_sqlalchemy2') #添加章节
cf.set('logger_sqlalchemy2','level','DEBUG') #添加一个选项
cf.set('logger_sqlalchemy2','qualname','sqlalchemy.engine') #添加一个选项
cf.write(open(r'D:\pythonexam\test\log.ini','w'))
log.ini改成如下
[logger_alembic]
level = INFO
handlers =
qualname = alembic
[logger_sqlalchemy2]
level = DEBUG
qualname = sqlalchemy.engine