pickle序列化模块
pickle序列化模块
优势:能够序列化python中所有类型
缺点:只能在python中使用
pickle运用的场景:产生一个对象保存到文件中,取出来还是一个对象
# 比如类C1产生了一个对象obj,如何将obj保存在文件中,而且可以读取出来obj class C1: def __init__(self, name, age): self.name = name self.age = age def func1(self): print('from func1') def func2(self): print('from func2') obj = C1('duoduo', 12) print(type(obj)) # <class '__main__.C1'>
1.直接写
直接用write方法去写入文件中,由于write方法的参数为要写入的数据,需要是字符串str类型,或者是bytes类型,而对象并不是字符串类型数据
with open(r'a.txt', 'w', encoding='utf8') as f: f.write(obj) # 报错:TypeError: write() argument must be str, not C1
2.使用json序列化
json无法序列化类产生的实例
import json with open(r'a.txt', 'w', encoding='utf8') as f: json.dump(obj, f) # TypeError: Object of type C1 is not JSON serializable
3.使用pickle模块
使用pickle读取对象的前提:pickle模块去读取文件中的对象,在调用pickle的文件中必须要有生成该对象的类
# pickle可以把对象存入文件中,也可以从文件中读取出来 import pickle # 写入 with open(r'a.txt', 'wb') as f: pickle.dump(obj, f) # 读取 with open(r'a.txt', 'rb') as f: res = pickle.load(f) print(res) # <__main__.C1 object at 0x10454bdc0>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY