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 base64 decode incorrect padding错误解决方法
Jan 08 Python
python处理Excel xlrd的简单使用
Sep 12 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
django query模块
Apr 20 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
python Django中models进行模糊查询的示例
Jul 18 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
Python图像识别+KNN求解数独的实现
Nov 13 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php导入模块文件分享
2015/03/17 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python安装OpenCV的示例代码
2020/03/05 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
使用Python封装excel操作指南
2021/01/29 Python
python中spy++的使用超详细教程
2021/01/29 Python
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
通用求职信范文模板分享
2013/12/27 职场文书
应届大学生求职信
2014/07/20 职场文书
工资证明格式模板
2015/06/12 职场文书
Vue Element plus使用方法梳理
2022/12/24 Vue.js