1.定义
序列化 : 把不能够直接存储在文件中的数据变得可存储,这个过程就是序列化
反序列化: 把文件的数据内容拿出来,恢复成原来的数据类型,这个过程就是反序列化.
2.实际案例的使用dumps和loads
import pickle
# ### (1)dumps 和 loads
#dumps 把任意对象序列化成一个bytes
lst = [1,2,3]
res = pickle.dumps(lst)
print(res)
#loads 把任意bytes反序列化成原来数据
lst = pickle.loads(res)
print(lst,type(lst))
3.实际案例dump和load
# ### (2)dump 和 load
#dump 把对象序列化后写入到file-like Object(即文件对象) (如果配合文件操作 推荐使用dump和load)
with open("ceshi2.txt",mode="wb") as fp:
setvar = {"a",1,"b"}
# dump 相当于先dumps 变成字节流,再用write写入字节流;将两部操作合并成一步是dump
# dump(要序列化的数据,文件对象)
pickle.dump(setvar,fp)
#load 把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据
with open("ceshi2.txt",mode="rb") as fp:
# 首先把文件内容读出来,然后进行反序列化,将两部操作合并成一步
res = pickle.load(fp)
print(res,type(res))
4.dumps和dump区别对比
# dumps 和 loads 配合文件操作使用
with open("ceshi3.txt",mode="wb") as fp:
dic = {"xb":"比较喜欢晒女友","zh":"喜欢睡觉"}
res = pickle.dumps(dic)
fp.write(res)
with open("ceshi3.txt",mode="rb") as fp:
res = fp.read()
dic = pickle.loads(res)
print(dic,type(dic))