2025年6月4日 星期三 乙巳(蛇)年 三月初八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python ini配置文件操作

时间:12-11来源:作者:点击数:23
CDSY,CDSY.XYZ

".ini"(即Initialization file),意为初始化文件,常常用于配置文件,包含环境参数、设定参数等等,它十分简洁,而且处理方便,以下是它的基本格式和通过Python对它完成基本的读写操作。

1、ini文件基本格式

下面是一个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作为备用值。

2、ini文件常见操作

在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

3、栗子

  • # -*- 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')
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐