Python配置文件操作教程_JSONINIYAML解析与应用实战
技术百科
舞夢輝影
发布时间:2026-01-01
浏览: 次 Python配置文件首选JSON、INI、YAML:JSON轻量通用但无注释;INI结构清晰适合简单场景;YAML功能强支持嵌套与注释,推荐中大型项目;应封装Config类统一管理并校验。
Python 中处理配置文件最常用的是 JSON、INI 和 YAML 三种格式,它们各有适用场景:JSON 简洁通用,适合简单结构和跨语言交互;INI 轻量易读,适合传统桌面或小型工具配置;YAML 表达力强、支持嵌套与注释,适合复杂服务配置(如 Docker、CI/CD)。选对格式 + 正确解析方式,能避免硬编码、提升可维护性。
JSON 配置:轻量可靠,内置支持开箱即用
Python 标准库 json 模块无需安装,适合存储键值对、列表、嵌套字典等结构化数据。注意:JSON 不支持注释、单引号、末尾逗号,键名必须是双引号字符串。
- 写入配置:json.dump(data, file, indent=2) 保持可读性,ensure_ascii=False 支持中文输出
- 读取配置:json.load(file) 直接返回 Python 字典,可直接访问 config["database"]["host"]
- 常见问题:路径错误导致 FileNotFoundError;中文乱码多因未指定 encoding="utf-8";修改后忘记调用 file.seek(0) 和 file.truncate() 就重写文件
INI 配置:类 Windows 风格,section-driven 结构清晰
使用标准库 configparser,天然适配带节([section])的扁平化配置,比如日志级别、不同环境参数。不支持嵌套,但语法直观,老项目兼容性好。
- 读取:config.read("config.ini"),再用 config.get("db", "port") 或 config.getint("db", "port") 自动转类型
- 写入:先 config.add_section("cache"),再 config.set("cache", "timeout", "30"),最后 config.write(file)
- 技巧:用 config["DEFAULT"] 定义全局默认值;interpolation=None 可禁用 %()s 变量替换,避免误解析
YAML 配置:灵活强大,推荐用于中大型项目
YAML 需安装第三方库:pip install pyyaml。它支持注释、锚点(&)、引用(*)、多行字符串和复杂数据类型,是现代运维和微服务配置的主流选择。
- 安全加载:yaml.safe_load(file) 替代 yaml.load(),防止反序列化恶意代码
- 保留顺序(Python 3.7+ 默认 dict 有序):若需显式保障,用 yaml
.CLoader 或自定义构造器 - 常见坑:缩进必须用空格(不能用 Tab);布尔值写成 yes/no 或 on/off 会被自动转 bool;日期字符串可能被误解析为 datetime,可用 yaml.FullLoader 控制
统一管理建议:封装 Config 类,按需切换格式
避免每个模块重复写读取逻辑。可封装一个基础 Config 类,通过文件扩展名自动选择解析器,对外提供统一的 get(key, default=None) 接口。
- 支持热重载:监听文件 mtime 变化,开发时配置修改后自动生效(适合调试)
- 环境隔离:用 os.getenv("ENV", "dev") 动态加载 config.dev.yaml 或 config.prod.json
- 校验机制:配合 pydantic 定义配置 Schema,启动时校验必填项、类型、范围,提前暴露问题
# 常见问题
# python
# windows
# 配置文件
# 工具
# win
# js
# json
# docker
# 编码
# 中文乱码
# 键值对
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Windows10如何彻底关闭自动更新_Win10
- 如何在Golang中处理模块冲突_解决依赖版本不兼
- Win11怎么设置开机问候语_自定义Win11锁屏
- LINUX怎么进行文本内容搜索_Linux gre
- 微信企业付款回调PHP怎么接收_处理企业付款异步通
- 如何在Golang中指定模块版本_使用go.mod
- Mac如何备份到iCloud_Mac桌面与文稿文件
- Mac如何设置动态壁纸?(让桌面动起来)
- Windows7怎么找回经典开始菜单_Window
- Win10如何卸载WindowsDefender_
- Windows执行文件被SmartScreen拦截
- Win11怎么关闭搜索历史_Win11清除设备上的
- c++怎么使用std::unique实现去重_c+
- MAC如何设置网卡MAC地址克隆_MAC终端修改物
- Win10怎样卸载TeamViewer_Win10
- Win10怎么设置开机密码_Windows10账户
- Win11怎么关闭透明效果_Windows11辅助
- 如何在包含多值的列中精准搜索指定演员?
- 如何处理“XML格式不正确”错误 常见XML we
- Windows电脑如何进入安全模式?(多种按键方法
- Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡
- Win11麦克风没声音怎么设置_Win11麦克风权
- Win11怎么关闭透明效果_Windows11个性
- php条件判断怎么写_ifelse和switchc
- 网站内页做seo排名怎么做?
- 如何更改Windows资源管理器的默认启动位置?(
- Win11 explorer.exe频繁崩溃_修复
- Windows10怎么备份注册表_Windows1
- 如何使用 Python 合并文件夹内多个 Exce
- 如何在 Go 结构体中正确初始化 map 字段
- win11 OneDrive怎么彻底关闭 Win1
- 如何在Golang中使用encoding/gob序
- Windows如何设置登录时的欢迎屏幕背景?(锁屏
- c# Task.ConfigureAwait(tr
- 如何在Golang中验证模块完整性_Golangg
- Windows10任务栏图标变成白色文件_Win1
- Win11怎么查看电脑配置_Win11硬件配置详细
- Win11怎么清理C盘系统错误报告_Win11清理
- Windows10如何查看蓝屏日志_Win10使用
- php打包exe如何加密代码_防反编译保护方法【技
- c++ stringstream用法详解_c++字
- Win11关机快捷键是什么_Win11快速关机方法
- php怎么连接数据库_MySQL数据库连接的基础代
- PhpStorm怎么调试PHP代码_PhpStor
- Windows10电脑怎么设置虚拟内存_Win10
- Python对象生命周期管理_创建销毁说明【指导】
- Linux怎么实现内网穿透_Linux安装Frp客
- php本地部署支持nodejs吗_php与node
- php485函数怎么捕获异常_php485错误处理
- mac怎么安装adb_MAC配置Android A

.CLoader 或自定义构造器
QQ客服