村长告诉你:Python 处理 yaml 格式的数据简单到爆
本文目录
不是标记语言
一、思考❓❔
1.什么是yaml?

不是标记语言
对用户极其友好
数据序列化标准
跨语言
所有编程语言都支持
跨平台
所有平台都支持
Windows、linux、Mac
格式简单
比json小姐姐穿得更少
应用非常广泛
2.Python中哪些模块可以处理yaml?

pyyaml
应用最广泛
封装的api不够简单
不支持YAML 1.2最新版
ruamel.yaml
是pyyaml的衍生版
封装的api简单
支持YAML 1.2最新版
二、基础操作??

1.安装ruamel.yaml
使用官方pypi源来安装
pip install ruamel.yaml
使用豆瓣pypi源来安装(推荐)
pip install -i https://pypi.douban.com/simple ruamel.yaml
2.基本用法
在项目根目录下创建user_info.yaml文件
# 外号 --- user: - 可优 - keyou - 小可可 - 小优优 # 爱人 lovers: - 柠檬小姐姐 - 橘子小姐姐将yaml格式的数据转化为python中的数据类型
from ruamel.yaml import YAML # 第一步: 创建YAML对象 yaml = YAML(typ='safe') # typ: 选择解析yaml的方式 # 'rt'/None -> RoundTripLoader/RoundTripDumper(默认) # 'safe' -> SafeLoader/SafeDumper, # 'unsafe' -> normal/unsafe Loader/Dumper # 'base' -> baseloader # 第二步: 读取yaml格式的文件 with open('user_info.yaml', encoding='utf-8') as file: data = yaml.load(file) # 为列表类型 print(f"data:\n{data}")输入结果:

将Python中的字典或者列表转化为yaml格式的数据
from ruamel.yaml import YAML # 第一步: 创建YAML对象 # yaml = YAML(typ='safe') yaml = YAML() # 第二步: 将Python中的字典类型数据转化为yaml格式的数据 src_data = {'user': {'name': '可优', 'age': 17, 'money': None, 'gender': True}, 'lovers': ['柠檬小姐姐', '橘子小姐姐', '小可可'] } with open('new_user_info.yaml', mode='w', encoding='utf-8') as file: yaml.dump(src_data, file)生成的new_user_info.yaml文件:
user: name: 可优 age: 17 money: gender: true lovers: - 柠檬小姐姐 - 橘子小姐姐 - 小可可
三、复杂案例演练??

1.将Python中的对象转化为yaml格式数据
from ruamel.yaml import YAML
# 第一步: 创建需要保存的User类
class User:
"""
定义用户类
"""
def __init__(self, name, age, gender):
self.name, self.age, self.gender = name, age, gender
self.lovers = []
def loved(self, user):
self.lovers.append(user)
# 第二步: 创建YAML对象
yaml = YAML()
# 第三步: 注册用户类
yaml.register_class(User)
# 第四步: 保存用户对象
keyou = User("可优", 17, "油腻男")
lemon_little_girl = User("柠檬小姐姐", 16, "素颜小仙女")
orange_little_girl = User("橘子小姐姐", 18, "不会PS的靓妹")
keyou.loved(lemon_little_girl)
keyou.loved(orange_little_girl)
with open('lovers.yaml', mode='w', encoding='utf-8') as file:
yaml.dump([keyou], file)
生成的lovers.yaml文件:
- !User
name: 可优
age: 17
gender: 油腻男
lovers:
- !User
name: 柠檬小姐姐
age: 16
gender: 素颜小仙女
lovers: []
- !User
name: 橘子小姐姐
age: 18
gender: 不会PS的靓妹
lovers: []四、总结??

yaml文件读取效率非常高
yaml文件相当适合存放测试数据
ruamel.yaml模块对yaml文件的操作进一步简化
yaml在自动化测试和测试开发中都有广泛应用

来源:testingpai