Python使用pyyaml模块处理yaml数据

Mason
Mason
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍Python中pyyaml模块的使用方法,重点讲解yaml.safe_dump()、yaml.safe_load()及其_all系列函数。通过代码示例展示如何将Python字典转换为YAML格式文件,以及如何从YAML文件读取数据还原为Python对象,涵盖单块与多块数据的处理场景。

pyyaml模块概述

在Python中,pyyaml模块是处理YAML格式数据的核心工具。它主要提供yaml.safe_dump()和yaml.safe_load()两个函数,用于实现Python对象与YAML格式数据之间的双向转换。虽然也存在yaml.dump()和yaml.load()函数,同样具备数据转换功能,但官方文档明确建议优先使用safe系列函数,因为它们在处理非受信任输入时更为安全。

官方指出,safe系列函数仅解析基础的YAML标签。这种限制确保了在处理不受信任的输入时,能够有效避免潜在的安全风险,从而保证操作的安全性。

若需处理包含多个独立YAML数据块的YAML文件,应使用yaml.safe_dump_all()和yaml.safe_load_all()函数。下文将详细演示这四个函数的具体用法及区别。

yaml.safe_dump()用法

yaml.safe_dump()

该函数用于将Python值转换为YAML格式的文件。以下是一个将字典数据写入YAML文件的示例:


import yaml
dict_data = {'a': 1, 'b': 2}
with open('data.yaml', 'w', encoding='UTF-8') as yaml_file:
  yaml.safe_dump(dict_data, yaml_file)

如果在调用yaml.safe_dump()时不指定第二个参数(即文件对象),函数将返回一个类似于YAML格式的字符串,而非直接写入文件。


import yaml
dict_data = {'a': 1, 'b': 2}
yaml_string = yaml.safe_dump(dict_data)
print(type(yaml_string))
print(yaml_string)

运行结果如下:

<class 'str'> a: 1 b: 2

yaml.safe_load()用法

yaml.safe_load()

该函数用于将YAML格式的文件或字符串转换为Python值。接续前例,从YAML文件读取数据的示例如下:


import yaml
with open('data.yaml', encoding='UTF-8') as yaml_file:
  data = yaml.safe_load(yaml_file)
print(type(data))
print(data)

运行结果如下:

<class 'dict'> {'a': 1, 'b': 2}

多块数据处理:safe_dump_all与safe_load_all

yaml.safe_dump_all()

此函数用于将一系列Python值转换为YAML格式文件。与yaml.safe_dump()类似,若不指定第二个参数,它将返回一个包含所有数据的YAML格式字符串,而非写入文件。


import yaml
dict_data1 = {'a': 1, 'b': 2}
dict_data2 = {'c': 3, 'd': 4}
yaml_string = yaml.safe_dump_all([dict_data1, dict_data2])
print(type(yaml_string))
print(yaml_string)

运行结果如下:


<class 'str'>
a: 1
b: 2
---
c: 3
d: 4

yaml.safe_load_all()

该函数用于将YAML格式文件转换为Python值,特别适用于包含多个YAML数据块的文件。具体用法如下:


import yaml
with open('data.yaml', encoding='UTF-8') as yaml_file:
  data = yaml.safe_load_all(yaml_file)
  for item in data:
    print(item)

运行结果如下:

{'a': 1, 'b': 2} {'c': 3, 'd': 4}

以上内容涵盖了Python中使用pyyaml模块处理YAML数据的主要方法,希望对您的学习有所帮助。欢迎继续支持本站获取更多技术资源。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表