序列化 : 把不能够直接存储在文件中的数据变得可存储,这个过程就是序列化
反序列化: 把文件的数据内容拿出来,恢复成原来的数据类型,这个过程就是反序列化.
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))
# ### (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))
# 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))
原文:https://www.cnblogs.com/jalen-123/p/13173749.html