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 fabric实现远程操作和部署示例
Mar 25 Python
详解Python中的strftime()方法的使用
May 22 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
Python3.7中安装openCV库的方法
Jul 11 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
如何使用Python实现自动化水军评论
Jun 26 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
Python中的socket网络模块介绍
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
数字转英文
2006/12/06 PHP
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
JavaScript中字符串拼接的基本方法
2015/07/07 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
Python中设置变量访问权限的方法
2015/04/27 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
python利用正则表达式提取字符串
2016/12/08 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python与pycharm有何区别
2020/07/01 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
责任担保书范文
2014/05/21 职场文书
员工保密承诺书
2014/05/28 职场文书
保安2014年终工作总结
2014/12/06 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python