主要内容:
- 小目标:了解ini配置文件格式,掌握ConfigParser模块
- 主要内容:
什么是ini文件;
ConfigParser模块;
如果看完这篇文章,你还是弄不明白ini配置文件; 你来找我,我保证不打你,我给你发100的大红包。
1.ini文件
- ini文件是文本文件;
- ini文件格式:主要用于做配置文件,例如mysql等的配置文件
- ini文件由节、键、值组成;
ini配置文件格式如下:
[section1] (键=值) name=value[section2 Name] key1=value1 key2=value
字段说明:
- ini处理:增加读取:节,key,value;
2.ConfigParser模块
Python中可以使用ConfigParser内置模块处理ini文件
- 导入方式
from configparser import ConfigParser
2.1 ini文件写入
操作说明:
- 使用字典方式添加:
conf[section] = {k1:v1,k2:v2...}
示例:
from configparser import ConfigParserfpath = r'E:et.ini'#创建ConfigParser对象config = ConfigParser()#增加节config.add_section("network")#设置节下的ip与dnsconfig.set("network", "ip", "172.22.201.71")config.set("network", "dns", "8.8.8.8")#增加新的节,k,v:userconfig['user'] = {"name":"user1"}f = open(fpath, 'w')config.write(f)f.close()
结果:
[network]ip = 172.22.201.71dns = 8.8.8.8[user]name = user1
- config写入注意点:添加section的名称不能重复,否则报错
2.2 遍历ini文件
操作说明:
- 获取所有的section, k, v
- 方法:config.items()
直接看代码
from configparser import ConfigParserfpath = r'E:et.ini'config = ConfigParser()config.read(fpath)#获取所有的section-name, section对象for sname, sitem in config.items(): #print(sname, sitem) print(f'[{sname}]') #获取section下所有的k-v for k,v in sitem.items(): print(f' [{k}]=[{v}]')
结果:
[DEFAULT][network] [ip]=[172.22.201.71] [dns]=[8.8.8.8][user] [name]=[user1]
2.3 ConfigParser常用的操作
操作说明:
直接操作:
from configparser import ConfigParserfpath = r'E:et.ini'config = ConfigParser()config.read(fpath)#获取所有的section名称print('list section:', list(config.keys()))#判断section是否存在if config.has_section('network') and config.has_option('network', 'ip'): #获取指定section下k的值 print(config.get('network', 'ip'))else: print("network or ip error")
结果:
list section: ['DEFAULT', 'network', 'user']172.22.201.71
2.4 Section相关操作
- 获取指定名称对应的section 直接操作:
from configparser import ConfigParserfpath = r'E:et.ini'config = ConfigParser()config.read(fpath)#获取section-name与section对象dictsec = dict(config.items())print(dictsec)#获取network对应的section对象secobj = dictsec['network']print(secobj)#获取network所有的keysprint(config.options('network'))
结果:
{'DEFAULT': , 'network': , 'user': }['ip', 'dns']
Section对象操作与列表类似,这里不再详细讲解。
2.5 ini文件修改
需要先将ini读取,然后修改,再重新写入 例如:将IP地址重新设置
from configparser import ConfigParserfpath = r'E:et.ini'config = ConfigParser()#读取文件config.read(fpath)#修改IP地址config.set('network', 'ip','116.28.27.16')f = open(fpath, 'w')#重新写入文件config.write(f)f.close()
总结
ConfigParser使用注意点
- section不能重复
- 获取section与key注意异常处理
- ConfigParser修改ini,需要将ini先读取,然后修改,再重新写入。