Python进阶教程m2b–ini文件

原文链接:http://www.juzicode.com/archives/635

 ini文件是window系统配置文件采用的存储格式,这种文件格式也可以用来保存程序的配置选项,比如一个GUI界面的下拉选项、打开文件的路径、复选框的选择等,在关闭程序前将这些配置保存在一个ini文件,下次再启动程序时读出ini文件再配置GUI选项。

ini文件组成

一个ini文件由多个section组成,每个section中由一行或多行的配置项组成,一条配置项包含一个key(option)和一个value,形式类似这样:key(option)=value,如果有注释写在分号“;”后。

Python内置的configparser模块可以用来读写ini文件。

读取ini文件

2.1 读取步骤

读取ini文件的步骤:

step1、利用ConfigParser()新建一个configparser实例congfig

step2、congfig.read()方法读取并打开ini文件

step3、config[section名称][key名称]完成key的value获取

import configparser
#step1新建configparser实例
config = configparser.ConfigParser()     
#step2读取方式打开ini文件
obj=config.read('config.ini')          
#step3读取key='drivername'的value
drivername = config['info']['drivername'] 
print('drivername:',drivername)        #得到内容为usbhub

==========结果==========
drivername: usbhub

2.2 get()方法

除了前面的示例中用字典形式的方法获取配置项的value,也可以用get()方法获取,第1个参数是section名称,第2个参数是key名称(也称option名称):

import configparser
config = configparser.ConfigParser()    #step1新建configparser实例
obj=config.read('config.ini')           #step2读取ini文件

drivername = config.get( 'info','drivername') 
print('drivername:',drivername)       

2.3 sections()方法

利用sections()方法可以读取到ini文件中所有的section的名称,返回一个包含所有section名称的list数据:

import configparser
config = configparser.ConfigParser() 
#step2 打开配置文件
obj=config.read('config.ini') #读取ini文件
sections_obj = config.sections() #获取所有的sections名称,得到一个list
print('sections_obj:',sections_obj) #sections_obj: ['info', 'languages', 'object']
drivername = config['info']['drivername'] #读取key='drivername'的值
print('drivername:',drivername)   #得到内容为usbhub

==========结果==========
sections_obj: ['info', 'languages', 'object'] 
drivername: usbhub

写入ini文件

3.1 写入步骤

写入ini文件的步骤:

step1、新建configparser实例congfig

step2、在config上修改配置内容,内容格式为dict型数据,文件配置项的key值对应字典的key,文件配置项的value对应字典的value

step3、打开文件并写入到ini文件

import configparser
#step1新建configparser实例
config = configparser.ConfigParser()    
#step2设置ini文件内容,内容格式为dict型数据
config['info'] = {'address': 'juzicode.com', '微信公众号':'桔子code'} 
config['info2'] = {'address': 'www.juzicode.com', 'weixin':'juzicode'} 
#step3打开文件并写入到ini文件
with open('config-write.ini','w') as pf: 
    config.write(pf) #z注意这里write()的入参是打开的文件实例  

打开完成写入后的ini文件,文件内容如下图所示:

【注意】和read()方法入参用配置文件名称不同,这里write()方法写入的是一个用open()函数创建的文件对象,而不是某个文件名称或者要写入的数据内容。

前面的例子中设置ini配置项是一次设置该section下的所有配置项,也可以单独设置某个配置项:

config['info3']={}  ##先添加一个section
config['info3']['port_no']= '65535' #设置单独的配置项
config['info3']['ip']= '127.0.0.1'

3.2 set()、add_section()方法

和get方法类似,也可以使用set方法写入配置项,set的第一个入参为section,第2个入参为key(option),第3个入参为value,在使用set()方法前,要保证section是必须存在的,可以使用add_section()添加section:

config.add_section('info2') #先用add_section添加section
config.set('info2','address', 'www.juzicode.com') #set()方法配置
config.set('info2','weixin','juzicode')

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注