Python yaml模块

1,998 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

复习回顾

关于对数据进行序列化和反序列化操作,Python不仅提供内置库还有支持第三方库

Python 内置库

  • 使用二进制协议对数据进行序列和反序列化操作-pickle模块
  • 对数据进行转换成JSON格式和反序列化操作-json模块
  • 使用类似字典键值对数据进行序列和反序列化操作-shelve模块
  • 对命令窗口的命令及选项进行解析操作-argparse模块

Python 第三方库

  • 第三方库,是json模块的升级版对无用字符进行优化-messagepack模块
  • Yaml配置文件数据的序列与反序列操作-yaml模块

序列化模块

本期,我们继续学习行业里流行的yaml模块相关方法的学习和使用,Let's go~

1. yaml 简介

yaml 是一种专门专门用于配置文件或者存储数据的语言,其文件以.yaml结尾

yaml 特点

  1. yaml 语言具有易读性易写性
  2. yaml 可用于描述型的数据结构如脚本
  3. yaml 适用在不同程序间的数据交换
  4. 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 模块方法简单使用

以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹🌹🌹✈️