Python学习者可加群交流:651707058
前言
configparser 用于增删改查常见的配置文件
配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。
为了更好的理解本文,我们先了解一下配置文件的组成及命名:配置文件(INI文件)由节(section)、键、值组成。
前言二
其实ini配置文件完全可以认为是,由多个字典合并而成的一个文件,每个字典名字叫做section,每个key叫做option,每个value还是value。操作的作用和字典有类似,只不过是换成了不同名字的函数,和不同的调用传参罢了。
如下图结构:
[baseconf] #属于section
host=127.0.0.1 #host属于option, 127.0.0.1属于value
port=3306
user=root
password=root
db_name=evaluting_sys
[concurrent]
processor=20
创建对象,读入配置文件
import configparser
#创建一个configparser对象
config = configparser.ConfigParser()
config.read('example.ini')#读取配置文件
打印节点section列表
sections_list = config.sections()#返回节点列表
print(sections_list)
输出:
['baseconf', 'concurrent']
打印所有节点以及键值对
for s in sections_list:
print(s)
for k in config[s]:
print(k,':',config[s][k])
输出:
baseconf
host : 127.0.0.1
port : 3306
user : root
password : root
db_name : evaluting_sys
concurrent
processor : 20
这里的节点section,下面就是一个字典。
打印给定section名字节点下的内容
声明:
def options(self, section):
"""Return a list of option names for the given section name."""
对一个给定的section名字返回一个keys列表。
op = config.options('baseconf')
for k in op:
print(k,':',config['baseconf'][k])
输出:
host : 127.0.0.1
port : 3306
user : root
password : root
db_name : evaluting_sys
第二种方法:
声明:
def items(self, section=_UNSET, raw=False, vars=None):
"""Return a list of (name, value) tuples for each option in a section.
对于一个节点的每一个选项(键值对)都返回一个(name,value)的列表
it = config.items('baseconf')
for t in it:
print(t[0],':',t[1])
输出:
host : 127.0.0.1
port : 3306
user : root
password : root
db_name : evaluting_sys
获取value
在已经知道section和option的时候,可以用下面的方法:
声明:
def get(self, section, option, *, raw=False, vars=None, fallback=_UNSET):
"""Get an option value for a given section.
对于一个给定的section,返回一个option对应的value
val = config.get('baseconf','port')
print(val)
输出:
3306
也可以这样:
val = config['baseconf']['port']
print(val)
输出:
3306
删除section
注意:删除section,会连同下面的option 以及value一起删除
config.remove_section('baseconf')
config.write(open('example.ini','w'))#要指定输出流fp参数,这里命名为同一个文件,会将源文件清空再写入
删除了section,只是删除了内存中的,还需要写入到文件才能永久改变
此时文件:
[concurrent]
processor = 20
可以看到一整块section部分都被删除了
删除option
config.remove_option('baseconf','port')
添加section
config.add_section('baseconf2')
添加option
config['baseconf']['port2'] = '222'
要注意,所有信息都得是字符串