您当前的位置:首页 > 计算机 > 编程开发 > Python

Python ini配置文件操作

时间:12-11来源:作者:点击数:
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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐