本文目录导读:

是的,Python 解析 YAML 最常用的库就是 PyYAML,它是目前 Python 生态中使用最广泛、文档最完善的 YAML 解析库。
安装 PyYAML
pip install pyyaml
基本用法
读取 YAML 文件
import yaml
# 从文件读取
with open('config.yaml', 'r', encoding='utf-8') as f:
data = yaml.safe_load(f)
print(data) # 返回 Python 字典/列表
# 从字符串读取
yaml_str = """
name: 张三
age: 30
hobbies:
- 读书
- 跑步
"""
data = yaml.safe_load(yaml_str)
写入 YAML 文件
data = {
'name': '张三',
'age': 30,
'hobbies': ['读书', '跑步']
}
# 写入文件
with open('output.yaml', 'w', encoding='utf-8') as f:
yaml.dump(data, f, allow_unicode=True, default_flow_style=False)
# 转成字符串
yaml_str = yaml.dump(data, allow_unicode=True)
关键函数说明
| 函数 | 说明 | 建议 |
|---|---|---|
yaml.safe_load() |
安全加载,只解析标准 YAML 标签 | 推荐使用 |
yaml.load() |
可解析 Python 自定义对象 | 有安全风险,不推荐 |
yaml.safe_load_all() |
加载多文档 YAML(多个 分隔) | 处理多文档时用 |
yaml.dump() |
将 Python 对象转为 YAML 格式 | 常用 |
yaml.dump_all() |
导出多文档 YAML | 较少用 |
安全注意事项
强烈建议总是使用 yaml.safe_load() 而不是 yaml.load():
# ✅ 安全 data = yaml.safe_load(yaml_str) # ❌ 危险 - 可能执行任意代码 data = yaml.load(yaml_str)
其他 YAML 库选项
虽然 PyYAML 是主流选择,但也有其他选择:
- ruamel.yaml:支持 YAML 1.2,保留注释和格式,适合需要保持原格式的场景
- oyaml:PyYAML 的简单包装,支持有序字典
如果只是基本需求,PyYAML 完全够用。