python3----configparser 读取 ini 文件

本贴最后更新于 1575 天前,其中的信息可能已经事过景迁

本文需求:读取配置文件。

配置文件有很多种,有各种格式,各种格式也有各自的应用场景。

网站上搜索了搜索了一圈,发现python3读取ini文件用的configparser模块。砸门就开始学习吧!

=================================================================

ini文件介绍:

image.png

[]包起来的称为section(节点)

节点可包含多个键值对。键称为option(选项),例如section_1节点下的key1

=================================================================

读configparser模块源码:

    __all__ 就好比你找别人借东西你只能借他答应借你的东西范围的借东西。(本质是列表
    _defalut_dict : 内置列表类的类名
    DEFAULTSECTMAX_INTERPOLATION_DEPTH 常量

ConfigParser类继承RawConfigParser):

	文档说明ConfigParser实现了interpolation插补

    set方法给定section和option来创建option // section存在section不存在option存在option不存在的排列组合
    add_section:在配置文件中创建一个新的sectionsection传一个str  
    //此类没有初始化方法说明继承自其调用RawConfigParser的__init__方法

  


RawConfigParser(继承MutableMapping可变映射)

    init方法中比较有意思的字段
    1.delimiters定界符说明key-value形式不仅仅能用等号=也能用冒号:)
    2.comment_prefixes注释的前缀说明注释不仅仅能用#号,也能用分号;)
    
    
    sections方法获取所有的节点的名字
    add_sections:添加节点
    has_sections:判断是否存在节点
    options获取所有选项的名字
    read**的方法读输入源输入源可以字典文件文件夹等形式
    get方法从指定的sectionoption获取value如果sectionoption其一不存在就报错
    set方法传入sectionoption设置一个option如果section不存在提示异常
    write方法就是一顿操作后你需要调用这个方法ini文件中才有你的数据

其他类和方法有需求自行去了解。

==============================================================================

练习:

创建一个ini文件,例如test.ini

image.png

ps:这里可以关注下 注释的形式和key-value的形式,选择你习惯的方式。

创建一个ini_read.py文件。

确定需求阶段:想一下,你尝尝会用到哪些操作,无非就是读和写。

1.修改值。

2.获取值。

附上代码:
ini_read.py

  import configparser
    
    
    class OperateIni:
        """
        a class which gets option's value  and sets value
        """
        def __init__(self,filename=None):
            self.cf = configparser.ConfigParser()
            if filename is not None:
                self.filename = filename
            else:
                self.filename = "test.ini"  # 这里直接写文件,是因为ini_read.py和test.ini文件在同一目录下
            self.cf.read(self.filename,"utf-8")
    
    
        def get_value(self,section,option):
            return self.cf.get(section,option)
    
        def set_value(self,section,option,value):
            if not self.cf.has_section(section):
                self.cf.add_section(section)
                self.cf.set(section, option, value)
            else:
                self.cf.set(section,option,value)
            self._write()
    
        def _write(self):
            with open(self.filename,"w") as f:
                self.cf.write(f)
    
    
    if __name__ == '__main__':
        # 获取值
        opi = OperateIni()
        res1 = opi.get_value("section_2","name")
        print(res1)
    
        # 修改值&&创建键值对
        # section1存在  option不存在
        opi.set_value("section_1", "name5", "9")
        # section不存在  option不存在  
        opi.set_value("section_5", "name9", "9")
        # # section1存在 option 存在
        opi.set_value("section_5", "name9", "10")
    

test.ini:

 [section_1]
    key1 = value1
    key2 = value2
    key3 = value3
    key4 = value4
    
    
    [section_2]
    key1 = value1
    key2 = value2
    key3 = value3
    key4 = 545
    name = 1
回帖
请输入回帖内容 ...