0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点#python使用技巧之解析配置ini文件

配置文件的好处是,配置成功后不需要每次使用时都指定相应的参数。而且,典型的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
举报

相关推荐

0 条评论