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 查找字符串是否存在实例详解
Jan 20 Python
Python自动生产表情包
Mar 17 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python实现随机漫步功能
Jul 09 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python爬虫实例——爬取美团美食数据
Jul 15 Python
python基于opencv实现人脸识别
Jan 04 Python
如何用python绘制雷达图
Apr 24 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP文件下载类
2006/12/06 PHP
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python实现下载文件的三种方法
2017/02/09 Python
使用python3+xlrd解析Excel的实例
2018/05/04 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python中time包实例详解
2021/02/02 Python
创先争优制度
2014/01/21 职场文书
护士自我评价范文
2014/01/25 职场文书
法学个人求职信范文
2014/01/27 职场文书
抗震救灾标语
2014/06/26 职场文书
党委班子对照检查材料
2014/08/19 职场文书
迟到检讨书范文
2015/01/27 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
个人年终总结开头
2015/03/06 职场文书
关于 Python json中load和loads区别
2021/11/07 Python