pickle是一种把python对象转换为便于存储在文件或数据库中,和可以在网络进行传输的二进制或文本格式的编码方法
pickle 模块主要提供了两个功能,一个是将python对象转换成字节流,即序列化;另一个是将字节流转换成python对象,即反序列化。
每个功能又分出了两个分支,一个是仅将python对象转换成字节流,另一个是将python对象转换成字节流并保存到文件中去(保存文件的后缀为”.pkl”).
pickle 是python语言的一个内置模块,可以直接通过import导入pickle模块直接使用.
代码:
import pickle
if __name__ == "__main__":
# 原始数据
data = {"username": "rosa", "pwd": 123}
# 1. 序列化
# (1)直接序列化成字节流:dumps()
data_bytes = pickle.dumps(data)
print(data_bytes)
# b'\x80\x03}q\x00(X\x08\x00\x00\x00usernameq\x01X\x04\x00\x00\x00rosaq\x02X\x03\x00\x00\x00pwdq\x03K{u.'
# (2) 序列化之后保存到文件中去: dump()
with open("data.pkl", mode="wb") as fp:
pickle.dump(data,fp)
#2. 反序列化
# (1)直接将序列化的字节流反序列为python对象 : loads()
data_bytes = b'\x80\x03}q\x00(X\x08\x00\x00\x00usernameq\x01X\x04\x00\x00\x00rosaq\x02X\x03\x00\x00\x00pwdq\x03K{u.'
data = pickle.loads(data_bytes)
print(data) # {'username': 'rosa', 'pwd': 123}
# (2)将二进制文件直接反序列为python对象 : load()
with open("data.pkl","rb") as fp :
data = pickle.load(fp)
print(data) #{'username': 'rosa', 'pwd': 123}