python操作配置文件ini

在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 安全,但仍需确保配置来源

相关推荐
apcipot_rain8 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A9 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持9 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang10 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰11 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc12 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
蜗牛一步步往上爬13 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
羲云网络15 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
张张123y15 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶18 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划