Python配置文件加载_ini与json解析【教程】

11次阅读

应根据实际需求选择:ini适合分节、带注释的简单配置(如数据库连接),用configparser读取;json适合嵌套复杂、跨语言共享的配置(如API参数),用json模块加载。

Python配置文件加载_ini与json解析【教程】

python 读取配置文件inijson 是最常用的两种格式。选哪种不取决于“哪个更好”,而要看实际需求:ini 更适合分节、带注释的简单配置(比如数据库连接、日志级别);json 更适合结构复杂、嵌套深、需要跨语言共享的配置(比如 API 参数、前端传来的规则)。

用 configparser 读取 ini 文件

Python 标准库自带 configparser,专为 ini 设计,语法简洁,支持节(section)、键值对和注释(以 ; 或 # 开头)。

  • ini 文件示例(config.ini):
[database] host = localhost port = 5432 user = admin password = secret 

[log] level = INFO file = app.log

  • Python 加载方式:

from configparser import ConfigParser
config = ConfigParser()
config.read(“config.ini”)

host = config.get(“database”, “host”) # 返回字符串
port = config.getint(“database”, “port”) # 自动转 int
log_level = config.get(“log”, “level”)

  • 注意:get() 总是返回字符串,如需其他类型,用 getint()getboolean()getfloat()read() 不报错即使文件不存在,建议加判断:if not config.read("config.ini"): raise FileNotFoundError("配置文件未找到")

用 json 模块加载 json 配置

json 更灵活,天然支持列表、嵌套字典、布尔值和 NULL,但不支持注释(写注释会解析失败),也不区分大小写(key 区分大小写)。

立即学习Python免费学习笔记(深入)”;

  • json 文件示例(config.json):
{   "database": {     "host": "localhost",     "port": 5432,     "auth": {       "user": "admin",       "password": "secret"     }   },   "features": ["cache", "metrics"],   "debug": true }
  • Python 加载方式:

import json
with open(“config.json”, encoding=”utf-8″) as f:
 config = json.load(f)

host = config[“database”][“host”]
features = config[“features”] # 直接是 list
debug_mode = config[“debug”] # 自动是 bool

  • 常见问题中文乱码?确保 open(..., encoding="utf-8");文件不存在?用 try/except json.JSONDecodeErrorFileNotFoundError 捕获;想从字符串加载?用 json.loads(String)

ini 和 json 怎么选?看这三点

  • 谁在维护配置? 运维或非程序员改配置 → 选 ini(有注释、分节清晰、不易写错)
  • 配置结构是否嵌套? 多层字典或含列表 → 选 json(ini 无法原生表达数组,强行模拟易出错)
  • 是否要和其他语言共用? go/JS/java 都要读 → 选 json(标准统一,解析器成熟)

进阶建议:混合使用 + 环境隔离

大项目常把通用配置放 json,敏感或环境相关项抽出来用 ini 或环境变量控制。例如:

  • 主配置 base.json 定义接口路径、超时时间
  • 环境配置 dev.ini / prod.ini 只存 host、密码等差异项
  • 代码中先加载 base.json,再用 configparser 覆盖对应字段

不复杂但容易忽略。

text=ZqhQzanResources