Python解析YAML用PyYAML吗

wen python案例 5

本文目录导读:

Python解析YAML用PyYAML吗

  1. 安装 PyYAML
  2. 基本用法
  3. 关键函数说明
  4. 安全注意事项
  5. 其他 YAML 库选项

是的,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 完全够用。

抱歉,评论功能暂时关闭!