当前位置: 首页 > 科技观察

本文带你了解Python中的Pickle模块

时间:2023-03-20 19:42:52 科技观察

大家好,我是围棋进阶。今天给大家分享一下Python基础的pickle模块。1.什么是泡菜模块?什么是持久模块?持久化模块:就是让数据持久化。pickle模块是Python特有的持久化模块,可以持久化包括自定义类在内的各种数据,比较适合Python本身复杂数据的存储。但是持久化后的字符串是不可读的,只能在Python环境下使用,不能用于与其他语言的数据交换。2、pickle模块的作用是将Python对象直接保存到文件中,而不是先将其转换成字符串再保存,也不需要使用底层的文件访问操作直接写入二进制文件。pickle模块将创建特定于Python语言的二进制格式。它不需要用户考虑任何文件细节,它会帮你完成读写对象的操作。使用pickle比打开文件、转换数据格式、写入节省了很多代码行。3、pickle中的主要方法dumps()和loads()对bytes类型进行操作,使用dump()和lload()读写文件时,使用rb或wb方式,即只接收bytes类型数据.1.pickle.dump(obj,file)将Python数据转换保存为pickle格式文件。withopen('data.pickle','wb')asf:pickle.dump(data,f)用文本编辑器打开上面保存的数据文件,你会发现里面全是不可读的代码。运行结果:2.pickle.dumps(obj)将Python数据转换为pickle格式的bytes字符串。importpickledic={"k1":"v1","k2":123}s=pickle.dumps(dic)print(s)运行结果:3.pickle.load(file)从pickle格式文件中读取数据和Types转换为Python。withopen('data.pickle','rb')asf:data=pickle.load(f)4.pickle.loads(bytes_object)将pickle格式的字节字符串转换为Python类型。importpickledic={"k1":"v1","k2":123}s=pickle.dumps(dic)dic2=pickle.loads(s)print(dic2)运行结果:4.项目演示示例1:importpicklewithopen('data.pickle','rb')asf:data=pickle.load(f).picklle格式文件,用记事本打开是乱码。运行结果:例2Pickle可以持久化Python自定义数据类型,但去持久化时必须能够读取类定义。importpickleclassPerson:def__init__(self,n,a):self.name=nself.age=adefshow(self):print(self.name+"_"+str(self.age))aa=Person("张三",20)aa.show()f=open('2.txt','wb')pickle.dump(aa,f)f.close()#delPerson#注意这一行有注释f=open('2.txt','rb')bb=pickle.load(f)f.close()bb.show()结果:如果取消注释行delPerson并删除代码中Person类的定义,则以下加载()方法会抛出错误。五、小结本文主要介绍Python中的pickle模块,并详细介绍模块中的主要方法。对遇到的问题进行详细的解答。最后,使用Python编程语言,通过项目实际开发。方便大家了解pickle模块。希望对大家的学习有所帮助。