21天学习python编程_ini文件与ConfigParser模块
主要内容:
- 小目标:了解ini配置文件格式,掌握ConfigParser模块
- 主要内容:
什么是ini文件;
ConfigParser模块;
如果看完这篇文章,你还是弄不明白ini配置文件;
你来找我,我保证不打你,我给你发100的大红包。
1.ini文件
- ini文件是文本文件;
- ini文件格式:主要用于做配置文件,例如mysql等的配置文件
- ini文件由节、键、值组成;
ini配置文件格式如下:
[section1]
(键=值)
name=value
[section2 Name]
key1=value1
key2=value2
说明:
字段 | 说明 |
---|---|
section | 节 |
key | 键 |
value | 数值 |
- ini处理:增加读取:节,key,value;
2.ConfigParser模块
Python中可以使用ConfigParser内置模块处理ini文件
- 导入方式
from configparser import ConfigParser
2.1 ini文件写入
- 一般操作方法
操作 | 说明 |
---|---|
conf = ConfigParser() | 创建ConfigParser对象 |
conf.add_section(section) | 增加section |
conf.set(section, option, value=None) | 在section下设置k-v |
conf.remove_section(section) | 删除指定的section |
config.remove_option(section, option) | 删除指定section下的key |
conf.write(fp, space_around_delimiters=True) | 将config内容写入文件 |
- 使用字典方式添加:
conf[section] = {k1:v1,k2:v2...}
示例:
from configparser import ConfigParser
fpath = r‘C:UsershygDesktopdata
et.ini‘
#创建ConfigParser对象
config = ConfigParser()
#增加节
config.add_section("network")
#设置节下的ip与dns
config.set("network", "ip", "172.22.201.71")
config.set("network", "dns", "8.8.8.8")
#增加新的节,k,v:user
config[‘user‘] = {"name":"user1"}
f = open(fpath, ‘w‘)
config.write(f)
f.close()
结果:
[network]
ip = 172.22.201.71
dns = 8.8.8.8
[user]
name = user1
- config写入注意点:添加section的名称不能重复,否则报错
2.2 遍历ini文件
操作 | 说明 |
---|---|
conf = ConfigParser() | 创建ConfigParser对象 |
config.read(filenames, encoding=None) | 读取文件 |
- 获取所有的section, k, v
- 方法:config.items()
直接看代码
from configparser import ConfigParser
fpath = 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常用的操作
操作 | 说明 |
---|---|
config.has_section(section) | 判断config下是否有section |
config.has_option(section, option) | 判断section下是否有option |
config.keys() | 返回所有的section名称组成的可迭代对象 |
config.options(section) | 获取指定section下所有的keys |
config.get(section, option,…) | 读取section下option对应值 |
config.getboolean/getfloat/getint(section, option,…) | 读取section下option对应值,返回Bool/浮点/整数 |
直接操作:
from configparser import ConfigParser
fpath = 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 ConfigParser fpath = r‘C:UsershygDesktopdata et.ini‘ config = ConfigParser() config.read(fpath) #获取section-name与section对象 dictsec = dict(config.items()) print(dictsec) #获取network对应的section对象 secobj = dictsec[‘network‘] print(secobj) #获取network所有的keys print(config.options(‘network‘))
结果:
{‘DEFAULT‘: <Section: DEFAULT>, ‘network‘: <Section: network>, ‘user‘: <Section: user>} <Section: network> [‘ip‘, ‘dns‘]
Section对象操作与列表类似,这里不再详细讲解。
2.5 ini文件修改
需要先将ini读取,然后修改,在重新写入
例如:将IP地址重新设置
from configparser import ConfigParser
fpath = r‘C:UsershygDesktopdata
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先读取,然后修改,在重新写入。
21天学习python编程_ini文件与ConfigParser模块
原文地址:https://blog.51cto.com/huangyg/2512337