好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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:\Users\hyg\Desktop\data\net.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:\net.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:\net.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:\Users\hyg\Desktop\data\net.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:\Users\hyg\Desktop\data\net.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模块的详细内容...

  阅读:26次