当前位置:首页 > 数码 > 数据耐久化的弱小工具-Python中的Pickle模块 (数据耐久化的定义)

数据耐久化的弱小工具-Python中的Pickle模块 (数据耐久化的定义)

admin7个月前 (04-15)数码36

/target=_blankclass=infotextkey>Python数据序列化和反序列化时,pickle模块是一个十分有用的工具。它准许将Python对象转换为字节流,以便存储在文件中或经过网络传输,而后将这些字节流从新转换回Python对象。

什么是Pickle?

pickle是Python规范库中的一个模块,用于将Python对象序列化(pickling)为二进制数据,以及从二进制数据反序列化(unpickling)为Python对象。这个模块关于在不同的Python程序之间传递数据或将数据存储到文件中十分有用。pickle模块支持简直一切的Python对象,包括自定义对象,但不适用于存储与Python解释器形态关系的对象,如关上的文件、套接字衔接等。

Pickle的基本用法

序列化(Pickling)

要将Python对象序列化为二进制数据,可以经常使用pickle.dump()函数。以下是一个繁难的示例,将一个Python列表保留到文件中:

importpickle>importpickle#关上文件以读取二进制数据withopen('data.pkl','rb')asfile:loaded_data=pickle.load(file)print(loaded_data)#输入:[1,2,3,4,5]

在上述代码中,经常使用pickle.load()函数从data.pkl文件中加载数据,并将其恢复为Python对象。

Pickle的上班原理

pickle模块的上班原理触及到将Python对象转换为一种可序列化的两边格局,而后再将该两边格局序列化为二进制数据。这个两边格局是一个自蕴含的示意对象的字典,其中蕴含了对象的数据和其类型消息。

当经常使用pickle.dump()序列化对象时,pickle模块首先创立一个蕴含对象数据和类型消息的两边字典。而后,它将该字典转换为二进制数据。反序列化时,pickle模块将二进制数据恢复为两边字典,而后再从字典中恢复Python对象。

这种方法使pickle模块十分灵敏,由于它可以序列化简直一切Python对象,包括自定义对象,只需它们可以在两边字典中示意。

Pickle的适用场景

pickle模块在以下状况下十分有用:

Pickle的留意事项

虽然pickle十分繁难,但在经常使用它时须要留意一些事项:

示例代码

以下是一个示例代码,展示如何经常使用pickle模块来序列化和反序列化一个自定义Python对象:

PickleimportpickleclassPerson:def__init__(self,name,age):self.name=nameself.age=agedef__str__(self):returnf"Person(name='{self.name}',age={self.age})"#创立一个自定义对象person=Person("Alice",30)#序列化并保留到文件withopen('person.pkl','wb')asfile:pickle.dump(person,file)#从文件中加载并反序列化withopen('person.pkl','rb')asfile:loaded_person=pickle.load(file)print(loaded_person)#输入:Person(name='Alice',age=30)

在上述代码中,咱们首先定义了一个自定义类Person,而后创立了一个Person对象。咱们经常使用pickle将该对象序列化为二进制数据,而后再从二进制数据中反序列化恢复对象。

结语

pickle模块是Python中用于序列化和反序列化数据的弱小工具。它可以用于数据耐久化、数据传输、对象复制以及测试和调试。虽然它十分繁难,但在经常使用时要小心安保性和版本兼容性的疑问。


python中的pickle模块储存数据,和print储存有什么区别吗

pickle是序列化的方式存储数据,可以还原回对象。 print应该只是打印这个对象数据到文件python的pickle模块实现了基本的数据序列和反序列化。 通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。 基本接口(obj, file, [,protocol])注解:将对象obj保存到文件file中去。 protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。 其中协议0和1兼容老版本的python。 protocol默认值为0。 file:对象保存到的类文件对象。 file必须有write()接口, file可以是一个以w方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。 如果protocol>=1,文件对象需要是二进制模式打开的。 (file)注解:从file中读取一个字符串,并将它重构为原来的python对象。 file:类文件对象,有read()和readline()接口。

python中的pickle如何使用

pickle是为了序列化/反序列化一个对象的,可以把一个对象持久化存储。 比如你有一个对象,想下次运行程序的时候直接用,可以直接用pickle打包存到硬盘上。 或者你想把一个对象传给网络上的其他程序,可以用pickle打包,然后传过去,那边的python程序用pickle反序列化,就可以用了。 用法上,它主要有两个函数:load和dump,load是从序列化之后的数据中解出来,dump是把对象序列化。 看看帮助就好了,很简单的。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Pickle