Python configparser模块详解:INI配置文件读写与格式规范
本文详细介绍Python中用于处理INI配置文件的configparser模块。内容涵盖INI文件的基本结构(Section、Key、Value)、大小写与空格处理规则、DEFAULT特殊区块的作用,以及如何使用read、get、items等方法读取配置,并通过add_section和write方法实现配置的增删改。特别指出Python 3中需指定encoding="utf-8"以支持中文注释,并对比了写入模式'w'与'a'的区别。
INI文件概述
INI是英文“初始化”(initialization)的缩写,通常用于对操作系统或特定程序进行初始化或参数设置。
其基本结构由节(section)、键(key)和值(value)三部分构成。在Windows系统中,存在大量此类文件,例如“System32.ini”和“Win.ini”,这些文件在系统配置中较为常见。
在Python中,操作此类配置文件的标准模块为configparser。该模块专门用于解析与Windows上INI文件结构相似的文件,提供统一的接口进行配置管理。
关于configparser模块
需要注意的是,在Python 2中该模块名为Configparser(首字母大写),而在Python 3中已统一改为configparser(全小写)。该模块的核心功能是作为INI配置文件的解析器。
其核心作用是通过模块提供的RawConfigParser()、ConfigParser()或SafeConfigParser()这三个类(任选其一)来创建配置解析对象。
创建对象后,即可利用该对象提供的方法对指定的配置文件执行增加、删除、修改和查询(CRUD)操作。
本文示例基于Python 3.8版本,开发环境使用PyCharm编译器。
INI文件格式规范

一个标准的INI配置文件主要由以下部分组成:
Section(节):表示一个配置区块,由方括号及其中的名称定义。Section的作用范围从当前方括号开始,直到下一个方括号出现之前。常见的示例包括“DEFAULT”、“select”和“connect_mysql”。
关于Section的规范:名称在保存和获取时保持原样,即大小写不同或包含不同空格均被视为不同的Section;此外,同一个配置文件中不允许出现重复的Section名称。
Option(选项):表示Section内的具体配置项,由Key、分隔符和Value组成的键值对。例如在“select”节下的“broswer = Chrome”。
关于Option的规范:Key在保存时会自动转换为小写,因此Key不区分大小写;但Value严格区分大小写。在通过Key获取Value时,系统会自动去除Key和Value前后的空格再进行匹配,例如文件中保存为' broswer = Chrome '时,使用'broswer'也能成功获取'Chrome'。Key不能跨行,但Value可以跨行,只要后续行的缩进与第一行不同即可,直到遇到下一个Option为止。同一Section下不允许出现重复的Key。分隔符可以使用等号“=”或冒号“:”。
注释:行注释以井号“#”或分号“;”表示。必须注意,注释符号必须位于行首(前面允许有空格),若出现在行中间则不会被识别为注释。
DEFAULT:这是一个特殊的Section,用作其他Section中Key取值失败时的备用值。可以将其理解为根节点,其他Section可视为其子节点,但该Section并非必须存在。
读取配置文件
import os
import configparser
conf = configparser.ConfigParser() # 类的实例化
curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')
conf.read(path,encoding="utf-8")
value = conf['select']['url']
print("通过read方法取得的值为:",value)
value = conf.get('login','username')
print('通过get方法取得的值:',value)
value = conf.items('login') # 读取一个section中的所有数据,返回一个列表
print("通过items方法取得的值:",value)
value = conf.getint('connect_mysql','port') # 指定读取数据的类型
print("指定数据类型取出的值:",value)
section = conf.sections() # 读取配置文件中所有section
print(section)执行上述代码后的运行结果如下所示。

注意:如果配置文件中包含中文注释,在Python 3中读取时必须添加参数encoding="utf-8",否则程序会报错。
conf.read(path,encoding="utf-8")写入配置文件
import os
import configparser
conf = configparser.ConfigParser() # 类的实例化
curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')
conf.add_section('login') # 添加一个新的section
conf.set('login','username','admin')
conf.set('login','password','123123') # 往配置文件写入数据
conf.write(open(path,'a')) # 保存数据运行写入代码后查看配置文件,可以看到新的Section已成功写入文件中。

write方法常用有两种写入方式,第一种是删除原文件内容后重新写入:
conf.write(open(path,'w'))第二种是在原文件基础上继续追加内容,采用追加模式写入:
conf.write(open(path,'a'))总结
至此,关于Python ini配置文件的介绍已完成。如需了解更多相关Python ini配置文件内容,请搜索本站历史文章或继续浏览后续相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









