python——Yaml
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python——Yaml相关的知识,希望对你有一定的参考价值。
参考技术A1.安装
2.yaml文件的格式
a)键值对形式
b)序列list
c)纯量str
d)强制转换,使用!!
e)多个文件:一个yaml文件里存在多个文件,用---表示,只能一起读取,不能分开读取
3.yaml文件的读取xx.yaml
4.yaml文件的写入
5.yaml文件的持续写入
6.Template修改yaml中的变量
source.yaml
Read_yaml.py
※ 问题:1.含有多个文件的yaml文件,读取出来如何选择?
2.持续写入能否将新写入的文件变成新的文件结构? ※
PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!
python读取yaml文件
yaml文件可以存储多种不同类型的数据(字符串、数字、元组、列表、字典等);
所有的数据都是以冒号和缩进的形式进行存储,严格区分大小写、中英文状态;
yaml文件示例:
1 # yaml文件中通过#号进行注释 2 # ①存储字典格式数据 3 test1: 4 login: 5 user: buxiubuzhi 6 password: 123456 7 8 # 或者 9 test2: {login:{user: buxiubuzhi,password: 123456}} 10 # 读取到的数据: 11 # { 12 #\'test1\': {\'login\': {\'user\': \'buxiubuzhi\', \'password\': 123456}}, 13 #\'test2\': {\'login\': {\'user\': \'buxiubuzhi\', \'password\': 123456}} 14 #} 15 # 读取到的数据的数据类型: <class \'dict\'> 16 17 # ②存储列表格式数据 18 19 - test: 第一个测试用例 20 - test: 第二个测试用例 21 - test: 第三个测试用例 22 23 #读取到的数据: [{\'test\': \'第一个测试用例\'}, {\'test\': \'第二个测试用例\'}, {\'test\': \'第三个测试用例\'}] 24 #读取到的数据的数据类型: <class \'list\'> 25 26 27 # 或者 28 [test: 第一个测试用例,test: 第二个测试用例, test: 第三个测试用例] 29 # 读取到的数据: [{\'test\': \'第一个测试用例\'}, {\'test\': \'第二个测试用例\'}, {\'test\': \'第三个测试用例\'}] 30 # 读取到的数据的数据类型: <class \'list\'> 31 32 # ③ 数据的锚点 通过&创建锚点 33 userInfo: &userInfo 34 username: buxiubuzhi 35 password: 123456 36 phoneNumber: 19999999999 37 38 # 注册时需要用到用户信息 通过*引用锚点 << 代表锚点插入的位置 39 register: 40 <<: *userInfo 41 42 #输出结果 43 # { 44 # \'userInfo\': {\'username\': \'buxiubuzhi\', \'password\': 123456, \'phoneNumber\': 19999999999}, 45 # \'register\': {\'username\': \'buxiubuzhi\', \'password\': 123456, \'phoneNumber\': 19999999999} 46 # } 47 48 userInfo: &userInfo 49 username: &username buxiubuzhi 50 password: &password 123456 51 phoneNumber: 19999999999 52 53 # 登录时只需要引用用户名和密码 54 login: 55 username: *username 56 password: *password 57 58 # 输出结果 59 #{ 60 # \'userInfo\': {\'username\': \'buxiubuzhi\', \'password\': 123456, \'phoneNumber\': 19999999999}, 61 # \'login\': {\'username\': \'buxiubuzhi\', \'password\': 123456} 62 #}
1.python读取一个yaml文件
# 导包 import yaml # 定义yaml文件路径 yaml_path = r\'D:\\Python_Script\\new_framework\\source_file\\login_page.yaml\' # 获取文件流对象 with open(yaml_path,\'rb\')as fileOpen: # 通过safe_load 读取文件流 value = yaml.safe_load(fileOpen) print(\'读取到的数据:\',value) print(\'读取到的数据的数据类型:\',type(value))
2.将数据写入到yaml文件
1 # 定义yaml文件路径 2 yaml_path = r\'./source_file/test1.yaml\' 3 4 # 将复杂类型写入到yaml文件中 5 data = { 6 "terminal" : "Chrome", 7 "URL": "www.baidu.com", 8 "login":{"username":"buxiubuzhi","password":"123456"}, 9 "test":["test_01","test_02","test_03"] 10 } 11 12 # 写入文件,如果文件不存在将会自动创建 13 with open(yaml_path,mode="w",encoding="utf-8") as fp: 14 yaml.dump(data,fp)
写入结果:
虽然数据成功写入了,但是有一个问题,写入之后的顺序发生了改变,有时候我们希望数据有一定的关联性数据顺序不能发生改变,那该怎么样呢?
第二种写入数据的方法,yaml模块的升级版:ruamel.yaml
1 # 安装模块:ruamel.yaml 2 # pip install ruamel.yaml 3 4 # 导包 5 from ruamel import yaml 6 7 # 定义yaml文件路径 8 yaml_path = r\'./source_file/test1.yaml\' 9 10 # 将复杂类型写入到yaml文件中 11 data = { 12 "terminal" : "Chrome", 13 "URL": "www.baidu.com", 14 "login":{"username":"buxiubuzhi","password":"123456"}, 15 "test":["test_01","test_02","test_03"] 16 } 17 18 # 写入文件,如果文件不存在将会自动创建 19 with open(yaml_path,mode="w",encoding="utf-8") as fp: 20 yaml.dump(data,fp,Dumper=yaml.RoundTripDumper) # 只需要添加参数:Dumper=yaml.RoundTripDumper
写入结果:
以上是关于python——Yaml的主要内容,如果未能解决你的问题,请参考以下文章
代写python,代写python编程,python代写,python编程代写,留学生python代写