python-- pickle 序列化
pickle
dump的结果是bytes, dump用的f文件句柄需要以wb的形式打开, load所用的f是'rb'模式
- 支持几乎所有对象的序列化
- 对于对象的序列化需要这个对象对应的类在内存中
- 对于多次dump / load的操作做了良好的处理
import pickle dic = {1: (12, 3, 4), ('a', 'b'): 4} pic_dic = pickle.dumps(dic) print(pic_dic) # bytes类型 new_dic = pickle.loads(pic_dic) print(new_dic)
结果:
b'\x80\x03}q\x00(K\x01K\x0cK\x03K\x04\x87q\x01X\x01\x00\x00\x00aq\x02X\x01\x00\x00\x00bq\x03\x86q\x04K\x04u.' {1: (12, 3, 4), ('a', 'b'): 4}
pickle支持几乎所有对象的
import pickle class Student: def __init__(self, name, age): self.name = name self.age = age zou = Student('aa', 22) ret = pickle.dumps(zou) pickle_data = pickle.loads(ret) print(pickle_data.name) print(pickle_data.age)
结果:
aa
22
例
import pickle class Student: def __init__(self, name, age): self.name = name self.age = age zou = Student('aaa', 83) with open('pickle_demo', 'wb') as f: pickle.dump(zou, f) with open('pickle_demo', 'rb') as f: pic = pickle.load(f) print(pic.name) # 没有上面的类就会报错,因为句话是从实例化类里拿name属性
结果:
aaa
例
import pickle with open('pickle_demo', 'wb') as f: pickle.dump({'k1': 'v1'}, f) pickle.dump({'k11': 'v1'}, f) pickle.dump({'k11': 'v1'}, f) pickle.dump({'k12': [1, 2, 3]}, f) pickle.dump(['k1', 'v1', 'l1'], f) with open('pickle_demo', 'rb') as f: while True: try: print(pickle.load(f)) except EOFError: break
结果:
{'k1': 'v1'} {'k11': 'v1'} {'k11': 'v1'} {'k12': [1, 2, 3]} ['k1', 'v1', 'l1']
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)