Python管理配置最常用YAML、JSON和INI:YAML适合分层与多环境,需用safe_load;JSON轻量标准,支持自定义解码;INI适合简单分节,需手动类型转换;推荐封装ConfigLoader统一加载、环境覆盖与校验。
Python 中管理配置最常用的方式是读取 YAML、JSON 和 INI 文件,它们结构清晰、易读易写,适合不同复杂度的项目。关键不在于“能读出来”,而在于如何统一加载、安全解析、支持环境切换、并方便地注入到应用逻辑中。
YAML 支持注释、锚点、引用、多文档,特别适合微服务或需要 dev/staging/prod 多套配置的场景。用 PyYAML 时务必禁用 yaml.load()(有反序列化风险),改用 yaml.safe_load()。
pip install pyyaml
import yaml
with open("config.yaml", "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)config.yaml):
database:
host: ${DB_HOST:localhost}
port: ${DB_PORT:5432}
name: myapp
logging:
level: INFO
file: logs/app.log
注意:原生 YAML 不支持环境变量插值,需配合 envyaml 或手动用 os.environ.get() 替换JSON 是 Web 场景中最通用的配置格式,结构严格、无歧义、所有语言都原生支持。Python 的 json 模块开箱即用,无需额外依赖。
open(..., encoding="utf-8")
datetime):
import json from datetime import datetimedef datetime_decoder(d): for k, v in d.items(): if isinstance(v, str) and "T" in v and ":" in v: try: d[k] = datetime.fromisoformat(v.r
eplace("Z", "+00:00")) except ValueError: pass return d
with open("config.json") as f: cfg = json.load(f, object_hook=datetime_decoder)
INI 格式天然支持“节”(section),比如 [database]、[cache],适合传统桌面工具或小型脚本。Python 内置 configparser 模块即可处理,但默认不支持嵌套或类型推断。
立即学习“Python免费学习笔记(深入)”;
interpolation=ExtendedInterpolation()
from configparser import ConfigParser, ExtendedInterpolationcfg = ConfigParser(interpolation=ExtendedInterpolation()) cfg.read("config.ini")
db_host = cfg.get("database", "host") db_port = cfg.getint("database", "port") # 自动转 int debug_mode = cfg.getboolean("app", "debug")
.split(",") 处理避免在代码里散落多个 yaml.load 或 configparser.read 调用。推荐封装一个 ConfigLoader 类,支持:
base.yaml + prod.yaml)CONFIG_DEBUG=true 覆盖 YAML 中的 debug 字段)cfg.database.host)或字典式访问(cfg["database"]["host"])KeyError
不复杂但容易忽略。
# python
# js
# json
# 编码
# app
# 工具
# 环境变量
# 一加
# 键值对
# yy
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】
Win11怎么卸载Photos应用_Win11卸载Photos应用方法【教程】
Win11怎么设置单手模式_Win11触控键盘布局调整教程【技巧】
Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】
c++的mutex和lock_guard如何使用 互斥锁保护共享资源【多线程】
Windows 10自带杀毒软件在哪_Windows 10打开和使用Windows安全中心
Python字符串处理进阶_切片方法解析【指导】
Win11怎么更改管理员名字 Win11修改账户名称详细步骤【教程】
如何在Golang中实现自定义Benchmark_Golang testing.B自定义性能测量示例
MAC怎么使用表情符号面板_MAC Emoji快捷键调用与符号查找【方法】
Python迭代器生成器进阶教程_节省内存与懒加载实战
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
VSC怎么在PHP中调试MySQL_数据库交互排查技巧【教程】
如何使用Golang包导出规则_控制函数和变量可见性
php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】
如何使用Golang reflect检查方法数量_动态分析类型方法
Win11如何隐藏桌面图标 Win11一键隐藏/显示桌面图标【指南】
如何使用Golang指针与接口结合_实现方法调用和动态类型
Python文件管理规范_工程实践说明【指导】
php中self::能调用子类重写的方法吗_静态绑定与重写关系【介绍】
Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】
Win11任务栏怎么放到顶部_Win11修改任务栏位置方法【详细】
PHP主流架构如何做单元测试_工具与流程【详解】
Windows10系统怎么查看运行时间_Win10 CPU正常运行时间查询
Windows10如何彻底关闭自动更新_Win10服务与组策略双重禁用
Win11怎么自动隐藏任务栏_Win11全屏显示设置【美化】
如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践
Windows10如何更改开机密码_Win10登录选项更改密码教程
Win11怎么更改系统语言_Win11中文语言包下载与安装【指南】
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Win10怎么设置开机密码_Windows10账户登录密码设置与取消
Win10如何关闭安全中心所有通知 Win10禁用Windows Defender提醒【设置】
Win11视频默认播放器怎么改_Win11关联第三方播放器【步骤】
如何使用Golang进行HTTP服务性能测试_测量吞吐量和延迟
Win10任务栏天气和资讯怎么关闭 Win10禁用新闻和兴趣功能【教程】
Win10如何更改任务栏高度_Windows10解锁任务栏调整大小
Win11如何连接Xbox手柄 Win11蓝牙连接游戏手柄教程【步骤】
如何使用Golang构建基础消息队列模拟_Golang消息发送与消费实现方法
mac怎么退出id_MAC退出iCloud账号与Apple ID切换【指南】
如何用正则与预处理结合精准拦截拼接式垃圾域名
Win11如何设置电源计划_Win11电源计划优化教程【攻略】
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
PHP怎么接收前端传的时间戳_处理时间戳参数转换技巧汇总【指南】
Win11怎么开启窗口对齐助手_Windows11系统多任务处理设置
Win11如何关闭小娜Cortana Win11禁用Cortana语音助手【优化】
PythonPandas数据分析项目教程_时间序列透视表应用
Win11怎么打开旧版计算器_Win11恢复传统计算器应用【详解】
全球各国上班时间表外贸邮件时间
Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值
mac怎么打开终端_MAC终端Terminal使用入门与常用命令【教程】
2026-01-04
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。