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实现的ini文件操作类分享
Nov 20 Python
Python3 replace()函数使用方法
Mar 19 Python
Django学习笔记之ORM基础教程
Mar 27 Python
Python中max函数用于二维列表的实例
Apr 03 Python
Python实现手写一个类似django的web框架示例
Jul 20 Python
python解析含有重复key的json方法
Jan 22 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
kali中python版本的切换方法
Jul 11 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
django中瀑布流写法实例代码
Oct 14 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
python 生成器需注意的小问题
Sep 29 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与Java进行通信的实现方法
2013/10/21 PHP
php中adodbzip类实例
2014/12/08 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
JavaScript中CreateTextFile函数
2020/08/30 Javascript
python中的列表推导浅析
2014/04/26 Python
Python网络爬虫实例讲解
2016/04/28 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
Python 函数返回值的示例代码
2019/03/11 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
瀑布模型都有哪些优缺点
2014/06/23 面试题
法警的竞聘演讲稿
2014/01/02 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
拉贝日记观后感
2015/06/05 职场文书