".ini"(即Initialization file),意为初始化文件,常常用于配置文件,包含环境参数、设定参数等等,它十分简洁,而且处理方便,以下是它的基本格式和通过Python对它完成基本的读写操作。
下面是一个ini文件
[DEFAULT]
stu5 = 66
[s_name]
ini =
option = student_name
stu1 = xh
stu2 = wk
stu3 = ky
stu4 = 88
[s_no]
option = student_no
stu2 = 23
stu3 = 34
[s_title]
option
ini文件有两个基本的组成部分,一是section(块),二是option(项),其中section由方括号和方括号中的名字组成,section的范围是当前方括号到下一个方括号的内容,section与section之间不能重名,区分大小写,option是section中的配置项,由key与value组成的键值对构成,一组key-value构成一个项,如key1 = value1(key与value之间用"="或者":");用" ; " 或者" # "表示注释,在ini文件中有一个特殊的section,[DEFAULT],当其他section获取不到值时用该default下的option作为备用值。
在Python中通过ConfigParser模块对ini进行读写操作,常用方法有:
读操作
read(filename) 读取文件内容(当配置文件有中文时,在调用read()方法时,需要传encoding="utf-8-sig"参数
sections() 获取所有的section,以列表形式返回
options(section)获取指定section的所有options,以列表形式返回
items(section)获取指定section的所有键值对,以列表形式返回
get(section, option)获取指定option的值,返回类型string
写操作
write(fp) 将config对象写入ini文件
add_section(section) 添加一个新的section
set(section, option, value) 对指定section下的某个option赋值
remove_section(section) 删除某个section
remove_option(section, option) 删除某个section下的某个option
# -*- coding: utf-8 -*-
# description: ini 文件处理
import configparser
class dispose_ini:
"""
封装一个类,进行ini文件的常用操作
"""
def __init__(self, filepath):
self._path = filepath
self.config = configparser.ConfigParser() # 实例化解析对象
self.config.read(filepath, encoding='utf-8') # 读文件
def get_sections(self):
"""
获取ini文件所有的块,返回为list
"""
sect = self.config.sections()
return sect
def get_options(self, sec):
"""
获取ini文件指定块的项
:param sec: 传入的块名
:return: 返回指定块的项(列表形式)
"""
return self.config.options(sec)
def get_items(self, sec):
"""
获取指定section的所有键值对
:param sec: 传入的块名
:return: section的所有键值对(元组形式)
"""
return self.config.items(sec)
def get_option(self, sec, opt):
"""
:param sec: 传入的块名
:param opt: 传入项
:return: 返回项的值(string类型)
"""
return self.config.get(sec, opt)
def write_(self):
""" 将修改后写入文件 """
with open(self._path, 'w') as fp:
self.config.write(fp)
def add_section_(self, sec):
"""
为ini文件添加新的section, 如果section 已经存在则抛出异常
:param sec: 传入的块名
:return: None
"""
self.config.add_section(sec)
self.write_()
def set_option(self, sec, opt, value):
"""
对指定section下的某个option赋值
:param sec: 传入的块名
:param opt: 传入的项名
:param value: 传入的值
:return: None
"""
self.config.set(sec, opt, value)
self.write_() # 写入文件
def remove_sec(self, sec):
"""
删除某个section
:param sec: 传入的块名
:return: bool
"""
self.config.remove_section(sec)
self.write_() # 写入文件
def remove_opt(self, sec, opt):
"""
删除某个section下的某个option
:param sec: 传入的块名
:param opt: 传入的项名
:return: bool
"""
self.config.remove_option(sec, opt)
self.write_() # 写入文件
if __name__ == '__main__':
# 加载文件, 初始化
dis = dispose_ini('./demo.ini')
# 获取ini文件所有的section
print(dis.get_sections())
# 获取指定section的所有options
print(dis.get_options('s_name'))
# 获取指定section的所有键值对
print(dis.get_items('s_name'))
# 获取指定section指定option的值
print(dis.get_option('s_name', 'stu4'))
# 对指定option赋值
dis.set_option('s_name', 'stu7', '88')
# 删除指定section
dis.remove_sec('s_title')
# 增加section
dis.add_section_('s_title')
# 删除指定option
dis.remove_opt('s_name', 'stu7')