前言:
作者简介:短尾巴小鳄鱼 ,一位不放弃自己的上进卷妹
💬 如果文章知识点有错误的地方,请留言指正~和大家一起学习,一起进步
💬 人生格言:昨日种种,皆成今我。今日种种,方成新我。切莫踌躇,莫停留,莫沉溺💬
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
因为文件的读写只能进行字符串或比特类型的操作,其他类型只能转换成字符串或比特类型,想要使用时再转换回原来的类型,转换的过程非常复杂。下面介绍的序列化与反序列化可以很好的解决这个问题。
序列化就是将对象的信息或数据结构信息通过转化成字符串,以达到存储或传输的效果
反序列化,顾名思义,就是将字符串转化成原来的类型。
数字类型、字符串类型、列表类型、元组类型、字典类型(最常用)
注意:类,实例化对象,函数,集合是无法序列化的
json是通用的序列化模块,几乎所有的编程语言都有json模块,且序列化与反序列化的规则是统一的。因此,我们在python中通过json序列化的数据,在其他语言中都可以反序列化并使用。
函数 | 参数 | 描述 | 例子 | 返回值 |
---|---|---|---|---|
dumps | obj | 对象序列化 | json.dumps([1, 2]) | 字符串 |
loads | str | 反序列化 | json.load(‘[1, 2]’) | 原始数据类型 |
json是一种序列化的标准,通过json中的dumps函数对对象进行序列化后,对象会以固定的标准返回:
同时,json也是一种文件格式,.json
文件中的内容都是字典通过json序列化之后的内容。
例子:将字典通过json序列化后存入json文件,再从json文件中读取内容转化成字典
pickle模块只在python中使用,在其他语言可能无法处理
函数 | 参数 | 描述 | 例子 | 返回值 |
---|---|---|---|---|
dumps | obj | 对象序列化 | pickle.dumps([1, 2]) | 比特 |
loads | byte | 反序列化 | pickle.load(‘[1, 2]’) | 原始数据类型 |
注意:和json不同的是,pickle模块dumps函数返回值是比特类型,load函数也只支持对比特类型进行反序列化
yaml文件类似json和txt文件,都是一种文本文件:xxx.yaml
yaml常作为配置文件使用,一般不会进行修改。yaml文件可以在服务启动前,将服务的配置信息放入到项目中进行初始化。以后在实际的web开发中会详细介绍。
yaml文件书写格式非常灵活,下面举一个常见的书写规范的例子:
name:
xiaoming
age:
10
like:
-piano
-pingpong
new:
a:b
b:1
首先安装pyyaml模块:pip install pyyaml
然后导入yaml模块:import yaml
读取yaml文件的方法:
f = open(yaml_file, 'r')
data = yaml.load(f.read(), Loader=yaml.FullLoader) # 返回值是字典类型
f.close()
# yaml.load()函数再yaml5.1之后必须加入第二个参数Loader,否则会报错
例子:
yaml文件:
读取yaml文件: