python——Yaml

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python——Yaml相关的知识,希望对你有一定的参考价值。

参考技术A

1.安装

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的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu装cobbler

代写python,代写python编程,python代写,python编程代写,留学生python代写

001--python全栈--基础知识--python安装

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python