python3读取配置文件,主要用的就算configparser模块,网上资料很乱,我这里整理一下,分享给大家。
比如我们这么一个配置文件,叫config.ini,内容如下
[account]
username=zhangsan
password=123456
[price]
CCNA=1000
CCNP=3000
RHCE=4000
RHCA=10000
#默认配置区
[DEFAULT]
language=python
我们是这么读取的,这里cfg类似两层字典,第一层叫sections,也就是 account 和 price,第二层叫option,也就是username password CCNA等,注意这里得到的值全部是字符串。注意option被读取后全部自动变成小写
import configparser
cfg=configparser.ConfigParser()
cfg.read('config.ini',encoding='utf-8') #读取配置文件 防止乱码
cfg.defaults() #默认配置的内容 可以当字典用
list(cfg) #所有sections列表 就是account price
cfg.sections() #效果同上 但是不包括DEFAULT部分
list(cfg['account']) #account下面的key列表
cfg.options('account') #效果同上
dict(cfg['account']) #获取account的内容,是一个字典
cfg.get('account','username') #获取account下面的username值
cfg['account']['username'] #效果同上
cfg.getint("price","ccna") #获取值 转换为整数 不能转换的就报错
cfg.has_section('account') #是否有这个section 返回布尔值
cfg.has_option('account','username') #是否有这个option 必须两个参数
cfg.remove_section('account') #删除section 返回布尔值
cfg.remove_option('price','CCNA') #删除option 返回布尔值
cfg.clear() #清空所有配置内容
cfg.add_section('new') #增加一个section
cfg.set('new','line','1') #增加line=1 到 new的section 必须都是字符串
cfg['new']={"line":1} #效果同上
dict(cfg['new']) #查看效果
with open('config.ini','w') as f:
cfg.write(f) #cfg配置写入到config.ini
注意,我发现section是区分大小写的,但是option是不区分的,也就是你新增的option如果只是大小写不同,会自动转换为全部小写并覆盖前面的。
效果如下 注意到DEFAULT下面的option 在其他的section下也是有效的 所以叫默认