python模块学习-pickle模块

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}

上一篇:基于p5实现的大五人格“线条”效果


下一篇:python之04-DataType-Bytes, Bytearray二进制类型