Python读取yaml文件的详细教程


Posted in Python onJuly 21, 2020

yaml简介

1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言。yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式。在自动化测试用的相当多所以需要小伙伴们要熟练掌握

2.yaml基本语法规则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样

3.yaml支持的数据结构有三种:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

安装yaml

1.使用pip安装pyyaml模块

pip install pyyaml

Python读取yaml文件的详细教程

Python读取yaml文件的详细教程Python读取yaml文件的详细教程

1.python各数据类型在yaml中的书写格式

1.yaml里面的键值对,也就是python里面的字典(dict)数据类型,比如python里面的字典,用yaml如何去写

# python3.6
{
"user": '测试',
"psw": 123456,
}

在yaml文件里可以这样写:

# yaml
user:测试
psw: 123456

字典嵌套字典

# python3.6
"nb1": {
 "user": "测试",
 "psw": "123456,
 }

3.yaml文件里可以这样写:

# yaml
nb1:
 user: 测试
 psw: 123456

序列(list)

1.yaml里面写一个数组,前面加一个‘-'符号,如下

- admin1: 123456
- admin2: 111111
- admin3: 222222

对应python里面的list

[{'admin1': 123456},
{'admin2': 111111}, 
{'admin3': 222222}]

注意:数字读出来的是int或float类型

纯量(str)

1.int和float类型的数字

n1: 12.30

对应python

{'n1': 12.3}

2.布尔值用true和false表示

n2: true 
n3: false

对应python

{'n2': True, 'n3': True}

3.None用~表示

n4: ~

对应python

{'n4': None}

4.时间采用 ISO8601 格式。

time1: 2001-12-14t21:59:43.10-05:00

对应python

{'time1': datetime.datetime(2001, 12, 15, 2, 59, 43, 100000)}

5.日期采用复合 iso8601 格式的年、月、日表示。

date1: 2017-07-31

对应python

{'date1': datetime.date(2017, 7, 31)}

6.使用两个感叹号,强制转换数据类型。

# int转str
n6: !!str 123

对应python

{'n6': '123'}
# bool值转str
n7: !!str true

对应python

{'n7': 'true'}

7.在yaml文件写入以下内容:

n1: 12.30
n2: true
n3: false
n4: ~
time1: 2018-04-18t21:59:43.10+08:00
date1: 2018-04-18
n6: !!str 123
n7: !!str true

python读取结果:

{'n1': 12.3, 
'n2': True, 
'n3': False, 
'n4': None, 
'time1': datetime.datetime(2018, 4, 18, 13, 59, 43, 100000), 
'date1': datetime.date(2018, 4, 18), 
'n6': '123', 
'n7': 'true'}

混合使用

1.list嵌套dict,在yaml里面写入如下内容:

- user: admin1
 psw: '123456'

- user: admin2
 psw: '111111'

- user: admin3
 psw: '222222'

用python读取出来的结果:

[{'user': 'admin1', 'psw': '123456'},
{'user': 'admin2', 'psw': '111111'},
{'user': 'admin3', 'psw': '222222'}]

2.dict嵌套list,在yaml里面写入如下内容:

nub1:
 - admin1
 - '123456'

nb2:
 - admin2
 - '111111'

nb3:
 - admin3
 - '222222'

用python读取出来的结果:

{'nub1': ['admin1', '123456'],
'nb2': ['admin2', '111111'], 
'nb3': ['admin3', '222222']}

3.读取yaml文件

Python读取yaml文件的详细教程

读取login.yaml文件的内容

Python读取yaml文件的详细教程

3.写入数据到yaml文件

Python读取yaml文件的详细教程

Python读取yaml文件的详细教程

总结

到此这篇关于Python读取yaml文件的文章就介绍到这了,更多相关Python读取yaml文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 从远程服务器下载日志文件的程序
Feb 10 Python
Python中splitlines()方法的使用简介
May 20 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
python实现反转部分单向链表
Sep 27 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
django最快程序开发流程详解
Jul 19 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
粗暴解决CUDA out of memory的问题
May 22 Python
Python中bisect的用法及示例详解
Jul 20 #Python
python为什么要安装到c盘
Jul 20 #Python
python如何代码集体右移
Jul 20 #Python
python接入支付宝的实例操作
Jul 20 #Python
高考考python编程是真的吗
Jul 20 #Python
如何基于Python Matplotlib实现网格动画
Jul 20 #Python
Python常用数据分析模块原理解析
Jul 20 #Python
You might like
php简单的会话类代码
2011/08/08 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python中的sort方法使用详解
2014/07/25 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python判断有效的数独算法示例
2019/02/23 Python
Python递归函数实例讲解
2019/02/27 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
解决使用Pandas 读取超过65536行的Excel文件问题
2020/11/10 Python
详解python polyscope库的安装和例程
2020/11/13 Python
本科生职业生涯规划书范文
2014/01/21 职场文书
企业内控岗位的职责
2014/02/07 职场文书
班级读书活动总结
2014/06/30 职场文书
初中信息技术教学反思
2016/02/16 职场文书
小学运动会开幕词
2016/03/04 职场文书