python学习笔记31:操作ini文件
python操作ini文件
1. ini文件是什么
[本节内容来自百度百科]
.ini 文件是Initialization File的缩写,即初始化文件, 是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑.ini才方便,一般只有很熟悉windows才能去直接编辑。开始时用于WIN3X下面,WIN95用注册表代替,以及后面的内容表示一个节,相当于注册表中的键。
除了windows2003很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
2. ini文件基本格式
ini文件由节, 键, 值组成.
[section]
key = value
注释以#或分号开始.
file.ini
; note
# sample
[section0]
param00 = value00
param01 = value01
[section1]
param10 = value10
param11 = value11
3. 用python操作ini文件
>>> import configparser # 导入包
>>>
>>> conf = configparser.ConfigParser() # 实例化
>>> conf.read('file.ini', encoding='utf-8') # 读取文件
['file.ini']
>>>
>>> ##############
>>> #访问ini内容
>>> ##############
>>>
>>> # 获取所有section的名称, 是一个list.
>>> _list_sections = conf.sections()
>>> print(f'{type(_list_sections)} {_list_sections}')
<class 'list'> ['section0', 'section1']
>>>
>>> # 获取section下所有的键(option), 是一个list.
>>> _list_items = conf.options('section0')
>>> print(f'{type(_list_options)} {_list_options}')
<class 'list'> ['param00', 'param01']
>>>
>>>
>>> # 获取section下所有的键值对, 是一个list.
>>> _list_items = conf.items('section0')
>>> print(f'{type(_list_items)} {_list_items}')
<class 'list'> [('param00', 'value00'), ('param01', 'value01')]
>>>
>>> # 使用dict的方式获取value, 返回str类型
>>> val00 = conf['section0']['param00']
>>> print(f'{type(val00)} {val00}')
<class 'str'> value00
>>>
>>> # 使用get()获取value, 返回str类型
>>> s_val11 = conf.get('section1', 'param11')
>>> print(f'{type(s_val11)} {s_val11}')
<class 'str'> 11
>>>
>>> # 使用getint()获取value, 返回int类型
>>> # 类似的还有getfloat(), getboolean()
>>> i_val11 = conf.get('section1', 'param11')
>>> print(f'{type(i_val11)} {i_val11}')
<class 'int'> 11
>>>
>>> ##############
>>> #a判断ini内容
>>> ##############
>>> print(conf.has_section('section2')) # 判断section是否存在
False
>>> print(conf.has_option('section2', 'param20')) # 判断option是否存在
False # section不存在, 则option肯定不存在, 返回False
>>>
>>> print(conf.has_option('section1', 'param20')) # 判断option是否存在
False # section存在, option不存在, 返回False
>>>
>>> print(conf.has_option('section1', 'param10')) # 判断option是否存在
True # section存在, option存在, 返回True
>>>
>>> ##############
>>> #修改ini内容
>>> ##############
>>>
>>> # 添加section
>>> conf.add_section('section2')
>>> print(conf.sections())
['section0', 'section1', 'section2']
>>>
>>> # 添加新的key
>>> conf.set('section2', 'param20', 'value20')
>>>
>>> # 修改已有key的value
>>> conf.set('section1', 'param10', 'value10_new')
>>>
>>> # 删除section, 删除key
>>> conf.remove_section('section0') # 删除整个section
True
>>> conf.remove_option('section1', 'param11') # 删除option, 也可以用del conf['section1']['param11']
>>>
>>> # 写到文件中
>>> conf.write(open('file_out.ini', 'w'))