原文链接:http://www.juzicode.com/archives/635
ini文件是window系统配置文件采用的存储格式,这种文件格式也可以用来保存程序的配置选项,比如一个GUI界面的下拉选项、打开文件的路径、复选框的选择等,在关闭程序前将这些配置保存在一个ini文件,下次再启动程序时读出ini文件再配置GUI选项。
1 ini文件组成
一个ini文件由多个section组成,每个section中由一行或多行的配置项组成,一条配置项包含一个key(option)和一个value,形式类似这样:key(option)=value,如果有注释写在分号“;”后。
Python内置的configparser模块可以用来读写ini文件。
2 读取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
3 写入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')