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下载Bing图片(代码)
Nov 07 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
python简单贪吃蛇开发
Jan 28 Python
python安装requests库的实例代码
Jun 25 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python conda操作方法
Sep 11 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
解决pycharm安装第三方库失败的问题
May 09 Python
python的help函数如何使用
Jun 11 Python
Python 虚拟环境工作原理解析
Dec 24 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入门学习知识点三 PHP上传
2011/07/14 PHP
php显示时间常用方法小结
2015/06/05 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
浅析return false的正确使用
2013/11/04 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[08:54]DOTA2-DPC中国联赛 正赛 Aster vs LBZS 选手采访
2021/03/11 DOTA
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
小学生班会演讲稿
2014/01/09 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
营销总监岗位职责
2014/09/16 职场文书
销售业务员岗位职责
2015/02/13 职场文书
班主任高考寄语
2015/02/26 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL