Python使用pyyaml模块处理yaml数据


Posted in Python onApril 14, 2020

pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump()、yaml.safe_load()函数将python值和yaml格式数据相互转换。当然也存在yaml.dump()、yaml.load()函数,同样能实现数据转换功能,只是官方不太推荐使用。官方给出的解释,因为yaml.safe_dump()、yaml.safe_load() 能够:

Resolve only basic YAML tags. This is known to be safe for untrusted input.

如果想对一个yaml文件中的多块yaml数据进行转换操作,则可以使用yaml.safe_dump_all()、yaml.safe_load_all()函数。下面会说明yaml.safe_dump()、yaml.safe_load()、yaml.safe_dump_all()、yaml.safe_load_all()函数的用法。

yaml.safe_dump()

将一个python值转换为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.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格式文件转换为python值,接第一例子,示例如下:

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}

yaml.safe_dump_all()

将一序列的python值转换为yaml格式文件,如果yaml.safe_dump_all()中不带第二个参数,则与yaml.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文件可以包含多块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 相关文章推荐
Python函数式编程指南(三):迭代器详解
Jun 24 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
浅谈python之高阶函数和匿名函数
Mar 21 Python
新手入门Python编程的8个实用建议
Jul 12 Python
Python Lambda函数使用总结详解
Dec 11 Python
python输出pdf文档的实例
Feb 13 Python
Pygame框架实现飞机大战
Aug 07 Python
如何通过python检查文件是否被占用
Dec 18 Python
Python用Jira库来操作Jira
Dec 28 Python
Django中的JWT身份验证的实现
May 07 Python
python解析照片拍摄时间进行图片整理
Jul 23 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 #Python
Python requests模块cookie实例解析
Apr 14 #Python
Python requests模块session代码实例
Apr 14 #Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 #Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 #Python
Jupyter Notebook输出矢量图实例
Apr 14 #Python
pygame实现弹球游戏
Apr 14 #Python
You might like
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
python中去空格函数的用法
2014/08/21 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python模块future用法原理详解
2020/01/20 Python
解决运行出现'dict' object has no attribute 'has_key'问题
2020/07/15 Python
化妆品店促销方案
2014/02/24 职场文书
应届生求职信范文
2014/05/26 职场文书
党员转正大会主持词
2015/07/02 职场文书
2015年教师节感言
2015/08/03 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技