".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')
-