全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PythonYAML配置文件读写方法_pyyaml实战讲解【指导】

Python读写YAML配置文件应使用PyYAML库,推荐用yaml.safe_load()安全读取、yaml.dump()配合default_flow_style=False等参数规范写入,并注意避免自动类型转换、注入风险及编码问题。

Python 中读写 YAML 配置文件,核心靠 PyYAML 库。它轻量、易用、支持主流 YAML 语法,是配置管理的常用选择。关键在于正确安装、安全加载、规范写入,避免常见坑(比如自动类型转换、注入风险)。

安装与基础读取(load)

先用 pip 安装:

pip install pyyaml

读取 YAML 文件推荐使用 yaml.safe_load(),它只解析安全的 YAML 标签(不执行任意代码),适合配置场景:

  • 传入打开的文件对象(推荐用 with 自动关闭)
  • 返回 Python 原生数据结构:字典、列表、字符串、数字、布尔、None
  • 若文件格式错误,会抛出 yaml.YAMLError,建议加 try/except

示例:

import yaml
with open("config.yaml", "r", encoding="utf-8") as f:
  data = yaml.safe_load(f)
print(data["database"]["host"])  # 如输出 'localhost'

安全写入(dump)与格式控制

yaml.dump() 将 Python 数据写入 YAML 文件。默认输出可能缩进混乱、带引号或省略空行,可通过参数优化可读性:

  • default_flow_style=False:禁用内联格式,强制块状结构(更易读)
  • allow_unicode=True:保留中文等非 ASCII 字符,不转义
  • indent=2:设置缩进空格数(默认为 2,可显式指定)
  • sort_keys=False:保持字典原有键序(Python 3.7+ 默认有序,但显式设为 False 更稳妥)

示例:

with open("config.yaml", "w", encoding="utf-8") as f:
  yaml.dump(data, f, default_flow_style=False, allow_unicode=True, indent=2, sort_keys=False)

处理常见配置需求

实际项目中常遇到几类典型情况:

  • 环境区分:用不同 YAML 文件(如 dev.yaml / prod.yaml),或在单文件中用锚点(&common)和引用(*common)复用配置
  • 敏感信息保护:不要把密码、密钥直接写进 YAML;可用占位符(如 password: ${DB_PASSWORD}),再结合 os.getenv() 运行时替换
  • 注释保留?:PyYAML 原生不支持读写注释(解析时丢弃)。如需维护注释,可考虑 ruamel.yaml 替代(功能更强,但依赖稍重)

避坑提醒

几个高频问题需注意:

  • 别用 yaml.load()(无 safe 版本)——存在反序列化漏洞,尤其加载不受信内容时
  • YAML 中 yes/no/on/off 会被自动转成布尔值,如需字符串,请加单/双引号:status: "on"
  • 文件编码务必统一(推荐 UTF-8),否则中文可能乱码;open 时显式声明 encoding="utf-8"
  • 嵌套层级过深或含特殊字符(如冒号后紧跟空格)容易解析失败,建议用在线 YAML 校验器(如 yamlchecker.com)预检


# word  # python  # 编码  # 配置文件  # yy 


相关文章: ,有什么在线背英语单词效率比较高的网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星免费模板:自助建站系统与智能响应式一键生成  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何快速搭建高效香港服务器网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  建站之星伪静态规则如何设置?  香港网站服务器数量如何影响SEO优化效果?  如何在新浪SAE免费搭建个人博客?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Swift开发中switch语句值绑定模式  内网网站制作软件,内网的网站如何发布到外网?  大连网站设计制作招聘信息,大连投诉网站有哪些?  实例解析angularjs的filter过滤器  南京网站制作费用,南京远驱官方网站?  如何选择高效可靠的多用户建站源码资源?  制作旅游网站html,怎样注册旅游网站?  企业微网站怎么做,公司网站和公众号有什么区别?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何彻底删除建站之星生成的Banner?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何选择网络建站服务器?高效建站必看指南  建站之星上传入口如何快速找到?  魔方云NAT建站如何实现端口转发?  如何破解联通资金短缺导致的基站建设难题?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何通过cPanel快速搭建网站?  历史网站制作软件,华为如何找回被删除的网站?  北京的网站制作公司有哪些,哪个视频网站最好?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  招商网站制作流程,网站招商广告语?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何在IIS中新建站点并解决端口绑定冲突?  建站之星图片链接生成指南:自助建站与智能设计教程  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何通过二级域名建站提升品牌影响力?  太平洋网站制作公司,网络用语太平洋是什么意思?  制作网站的模板软件,网站怎么建设?  建站之星后台管理系统如何操作?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  如何快速搭建支持数据库操作的智能建站平台?  jQuery 常见小例汇总  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  简历在线制作网站免费版,如何创建个人简历?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。