目录:
pickle 模块用于对象序列化(pickling)与反序列化(unpickling),序列化是指将Python对象转换为字节流(二进制数据)的过程,便于存储到文件或通过网络传输;反序列化则是将字节流恢复为原始Python对象的过程。
主要应用场景如下:
pickle.dump(obj, file, protocol=None): 将对象 obj 序列化并直接写入已打开的二进制文件对象 file。文件必须以’wb’(二进制写入)模式打开。
pickle.load(file): 从已打开的二进制文件对象 file 中读取字节流,并将其反序列化为 Python 对象。文件必须以 ‘rb’(二进制读取)模式打开。
import pickle
# 准备数据
data = {
'name': 'Alice',
'age': 30,
'hobbies': ['reading', 'coding'],
'is_student': False
}
# 使用 dump 和 load(文件操作)
with open('data.pkl', 'wb') as f: # 必须使用二进制写入模式
pickle.dump(data, f) # 序列化并保存到文件
print("对象已保存至 data.pkl")
with open('data.pkl', 'rb') as f: # 必须使用二进制读取模式
loaded_data = pickle.load(f) # 从文件加载并恢复对象
print(f"从文件恢复的数据: {loaded_data}")
pickle.dumps(obj, protocol=None): 将对象 obj 序列化为字节流(bytes类型)并返回,不涉及文件操作。
pickle.loads(bytes_obj): 将字节流 bytes_obj 直接反序列化为 Python 对象。
import pickle
# 准备数据
data = {
'name': 'Alice',
'age': 30,
'hobbies': ['reading', 'coding'],
'is_student': False
}
# 使用 dumps 和 loads(内存操作)
serialized_bytes = pickle.dumps(data) # 序列化为字节流
print(f"序列化字节流(前50字节): {serialized_bytes[:50]}...")
deserialized_data = pickle.loads(serialized_bytes) # 从字节流恢复
print(f"从字节流恢复的数据: {deserialized_data}")
↶ 返回首页 ↶