Yaml简介

Yaml:"Yet Another Markup Language"(是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

appium中,yaml 是专门用来写配置文件的语言,语言很简洁、强大,格式有点类似于json,感觉要比json强大点。

语法特点:

1.大小写敏感;

2.使用缩进表示层级关系;

3.缩进时不允许使用Tab键,只允许使用空格;

4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。

yaml下载

https://pyyaml.org/

也可以在cmd中下载

pip install pyyaml

Yaml数据类型

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

1.对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

2.数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

3.纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期

创建一个例子:

egyaml.yaml

name: Tom
age: 28
spouse:
name: May
age: 26
children:
- name: kate
age: 5
- name: jeck
age: 3

数据读取:

yamlload.py

import yaml

file = open('egyaml',encoding="utf-8")
data=yaml.load(file,yaml.FullLoader)
print(data)
#输出tom的名字、年龄
print(data['name'])
print(data['age']) #输出妻子的名字、年龄
print(data['spouse'])
print(data['spouse']['name'])
print(data['spouse']['age']) #输出孩子们的名字、年龄
print(data['children'])
print(data['children'][0]['name'])
print(data['children'][0]['age']) print(data['children'][1]['name'])
print(data['children'][1]['age'])

输出结果:

{'age': 28, 'name': 'Tom', 'children': [{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}], 'spouse': {'name': 'May', 'age': 26}}
Tom
28
{'name': 'May', 'age': 26}
May
26
[{'name': 'kate', 'age': 5}, {'name': 'jeck', 'age': 3}]
kate
5
jeck
3

补充:

file = open('egyaml',encoding="utf-8")
data=yaml.load(file)

运行后总出现

YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
data=yaml.load(file)

尽管是没有什么影响,但是看着别扭,YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader

data=yaml.load(file,yaml.FullLoader)这样就正常了

数据转化为yaml格式,用yaml.dump()

# -*- coding: utf-8 -*-#
import yaml
a1=[1,321.33,1,'hello',[1,2,3,'python'],]
a2={'123A':'class','No1':1,"money":13254.55,"tuple":(123),'teacher':[123,46546.225,'python']}
print(type(a1))
print(type(a2))
print(a1)
print(a2)
#转化为yaml类型
print(yaml.dump(a1))
print(yaml.dump(a2))

执行结果:

<class 'list'>
<class 'dict'>
[1, 321.33, 1, 'hello', [1, 2, 3, 'python']]
{'money': 13254.55, 'tuple': 123, 'No1': 1, '123A': 'class', 'teacher': [123, 46546.225, 'python']}
- 1
- 321.33
- 1
- hello
- - 1
- 2
- 3
- python 123A: class
No1: 1
money: 13254.55
teacher:
- 123
- 46546.225
- python
tuple: 123

最新文章

  1. GAME AI Pro 1 第1章
  2. Linux分区方案 (转)
  3. setNeedsDisplay,setNeedsLayout
  4. [原创]cocos2d-x研习录-第二阶 概念类之精灵类(CCSprite)
  5. [经验交流] Apache Mesos Docker集群初探
  6. 【openwrt】再设置
  7. 【转】Eclipse Console 加大显示的行数,禁止弹出
  8. 【转载】FPGA静态时序分析——IO口时序
  9. linux下使用svn
  10. PSI在windows server2008服务器上的安装方法
  11. CF 107E 多边形面积并
  12. **tomcat简介之web.xml详解
  13. 如何识别SQL Server中的IO瓶颈
  14. yii2.0修改默认的访问控制器
  15. Tomcat Java.OutOfMemoryError : PermGen Space异常
  16. 开头不讲&quot;Hello Word&quot;,读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)
  17. 三:OVS+GRE之完整网络流程
  18. antd-design TextArea initialValue 不生效可能原因
  19. react --- 搭建环境
  20. vs [失败]未能找到文件

热门文章

  1. vue实现文件上传
  2. Union All 使用注意事项和字段顺序不一致导致的异常
  3. bootstrap基础学习【表单含按钮】(二)
  4. Spring Boot 创建动态定时任务
  5. 数据结构:BF算法
  6. UVA Tress in a Wood
  7. Java门面模式(思维导图)
  8. VBA精彩代码分享-3
  9. Hexo折腾记--小白修改新主题
  10. 1.DOS常用命令