在Python中,操作 .ini配置文件常见且有代表性的三种方法 如下,从"标准库自带"到"第三方增强"依次介绍,并附可运行示例。
方法一:configparser(标准库,最常用)
特点:
Python 内置,无需安装第三方库
专门用于处理类似 Windows INI 格式的配置文件
支持节(section)、键(key)、值(value)
示例 config.ini

读取配置

写入 / 修改配置
config.set("database", "port", "3307")
with open("config.ini", "w", encoding="utf-8") as f:
config.write(f)
✅ 适用场景:传统 INI 文件、中小型项目、配置简单清晰
方法二:configobj(第三方库,功能更强)
特点:
支持嵌套结构(列表、段落)
自动类型推断(不用手动 getint)
校验(schema)能力强
比 configparser 更"人性化"
安装
pip install configobj
示例
from configobj import ConfigObj
cfg = ConfigObj("config.ini")
db_host = cfg["database"]["host"]
db_port = int(cfg["database"]["port"]) # 也可配合验证器自动转
# 修改
cfg["redis"]["port"] = 6380
cfg.write()
✅ 适用场景:
配置较复杂
需要类型自动转换
希望代码更简洁
方法三:手动读写 + ast.literal_eval(轻量 / 灵活)
特点:
不依赖 INI 解析库适合
"类 INI"但非标准格式
可把值当成 Python 字面量解析(list / dict / int / bool)
示例 config.ini
[server]
ports = [80, 443]
debug = True
读取
import configparser
import ast
config = configparser.ConfigParser()
config.read("config.ini")
ports = ast.literal_eval(config.get("server", "ports"))
debug = ast.literal_eval(config.get("server", "debug"))
print(ports, debug)
✅ 适用场景:配置中包含列表、布尔值、字典
不想引入新库但又想支持复杂类型
注意:ast.literal_eval 比 eval 安全,但仍需确保配置来源