小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
复习回顾
关于对数据进行序列化和反序列化操作,Python不仅提供内置库还有支持第三方库
Python 内置库
- 使用二进制协议对数据进行序列和反序列化操作-pickle模块
- 对数据进行转换成JSON格式和反序列化操作-json模块
- 使用类似字典键值对数据进行序列和反序列化操作-shelve模块
- 对命令窗口的命令及选项进行解析操作-argparse模块
Python 第三方库
- 第三方库,是json模块的升级版对无用字符进行优化-messagepack模块
- Yaml配置文件数据的序列与反序列操作-yaml模块
本期,我们继续学习行业里流行的yaml模块相关方法的学习和使用,Let's go~
1. yaml 简介
yaml 是一种专门专门用于配置文件或者存储数据的语言,其文件以.yaml结尾
yaml 特点
- yaml 语言具有易读性易写性
- yaml 可用于描述型的数据结构如脚本
- yaml 适用在不同程序间的数据交换
- yaml 可扩展性强,不受平台和语言限制
yaml安装方法:
pip install pyyaml
yaml模块导入:
import yaml
2. yaml 常用语法
yaml 文档由一个或多个文档组成,文档间区分如下
- 每个文档开头使用:
---
。如果是单个文档,可省略 - 每个文档结束使用:
...
。可选项
yaml 支持的数据结构有三种
- 纯量:字符串、布尔值、整数、Null、时间、日期
- 数组:list
- 键值表:字典
yaml 使用 & 和 * 引用
name: &name Juejin
user: *name
yaml 使用 !!
进行强制转换类型
String: !!str 3.14
Int: !!int "1234"
PS:更多关于yaml语法的yaml官方文档
3. yaml 常用方法
yaml 与其他序列化模块json、pickle一样,同样具有dump、load方法
方法 | 说明 |
---|---|
yaml.dump(obj,fp) | 将Python对象转换并输入到yaml文档 |
yaml.dump_all(obj,fp) | 将多个Python对象输入到yaml文档 |
yaml.load() | 将yaml文件转换成Python对象 |
yaml.load_all() | 将多段yaml语句转换成Python对象 |
4. yaml Vs json
yaml和json都是数据序列化语言.
- yamls不是标记语言,强调以数据作为重心
- Json 是js对象标记,一种轻量级的数据交换格式
{
"juejiner one": {
"name": "Tom",
"age": 21
},
"juejiner two": {
"name": "Tony",
"age": 12
}
}
以上是JSON格式的,我们来看一下yaml转换效果
# yaml
---
juejiner one:
name: Tom
age: 21
juejiner two:
name: Tony
age: 12
yaml 和 Json 使用场景划分
- json 比较适合网络请求返回的数据
- yaml 比较适合数据存放读取,常用于在自动化测试导入数据中
PS:我们在进行调试时可以,可以使用在线转换工具
5. 小试牛刀
我们来对前面的yaml数据,使用python进行解析操作
import yaml
Juer = {
"juejiner one": {
"name": "Tom",
"age": 21
},
"juejiner two": {
"name": "Tony",
"age": 12
}
}
# 将Python 对象转换成 yaml
yaml_text = yaml.dump(Juer)
print(yaml_text)
print("------------")
# 将yaml对象转换成Python对象
py = yaml.load(yaml_text,Loader=yaml.FullLoader)
print(py)
总结
本期,我们学习 yaml 模块方法简单使用
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹🌹🌹✈️