温州网站设计图片大全,网站设计合同注意事项,wordpress 优惠券,新出的网络游戏排行榜Python 常用模块pickle
pickle序列化模块
【一】定义
序列化#xff1a;将数据结构或对象转换为可存储或传输的格式反序列化#xff1a;将序列化后的数据恢复为开始的数据结构或者对象
【二】目的
数据持久化存储远程通信缓存进程间通信
【三】序列化
将对象转换为字节…Python 常用模块pickle
pickle序列化模块
【一】定义
序列化将数据结构或对象转换为可存储或传输的格式反序列化将序列化后的数据恢复为开始的数据结构或者对象
【二】目的
数据持久化存储远程通信缓存进程间通信
【三】序列化
将对象转换为字节流的过程称为序列化pickle.dumps(obj, protocolNone, *, fix_importsTrue, buffer_callbackNone)pickle.dump(obj, file, protocolNone, *, fix_importsTrue, buffer_callbackNone) obj要序列化的对象file一个文件对象通常以二进制写入模式打开文件protocol序列化的版本号可以省略默认None最高版本fix_imports为True默认尝试自动修复在不同Python版本之间可能的模块导入问题buffer_callback一个可选的回调函数用于控制内部缓冲区的分配。默认使用内部缓冲区管理
import pickleuser_dict {name: bruce, age: 18}str_dict pickle.dumps(user_dict)
print(str_dict)
print(type(str_dict))
# b\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05bruce\x94\x8c\x03age\x94\x8c\x0218\x94u.
# class bytes
with open(a.pkl, wb) as fp:pickle.dump(user_dict, fp)
# pickle.dump(user_dict, open(a.pkl, wb))【四】反序列化
将字节流还原成对象的过程称为反序列化pickle.loads(data, *, fix_importsTrue, encodingASCII, errorsstrictbuffersNone)pickle.load(file, *, fix_importsTrue, encodingASCII, errorsstrict,buffersNone) data要序列化的字节流内容file一个文件对象通常以二进制读取模式打开文件fix_imports为True默认尝试自动修复在不同Python版本之间可能的模块导入问题encoding字符串编码格式errors解码错误的处理方式与str.decode()方法中的参数相同。默认strict即抛出UnicodeDecodeErrorbuffers一个可选的PickleBuffer对象用于提供自定义缓冲区的支持默认None
import picklewith open(a.pkl, rb) as fp:read_dict pickle.load(fp)
# read_dict pickle.load(open(a.pkl, rb))
print(read_dict)
print(type(read_dict))
# {name: bruce, age: 18}
# class dict【五】通用性 pickle 模块适用于大多数 Python 对象包括自定义类的实例、内置数据类型等。 不适用于某些特殊对象比如文件句柄、数据库连接等。 josn序列化以后java、js等语言可以识别 pickle序列化以后其他语言都不能识别
【六】应用
【1】函数写入文件、从文件读取函数
import pickledef my_func():print(这是定制函数)pickle.dump(my_func, open(a.pkl, wb))
read_func pickle.load(open(a.pkl, rb))
read_func() # 这是定制函数【2】将实例写入文件、从文件读取实例
import pickleclass PeaShooter:def __init__(self, name, attack_val):self.name nameself.attack_val attack_valpickle.dump(PeaShooter, open(a.pkl, wb))
read_object pickle.load(open(a.pkl, rb))
ice_shooter read_object(寒冰射手, 20)pickle.dump(ice_shooter, open(a.pkl, wb))
read_instance pickle.load(open(a.pkl, rb))
print(read_instance.__dict__)
# {name: 寒冰射手, attack_val: 20}