Python Pickle示例

时间:2020-02-23 14:43:09  来源:igfitidea点击:

在本教程中,我们将讨论Python Pickle Example。
在上一教程中,我们讨论了Python多重处理。

Python Pickle

Python Pickle用于对Python对象结构进行"序列化"和"反序列化"。
可以对python上的任何对象进行腌制,以便将其保存在磁盘上。

首先,Python pickle序列化对象,然后将对象转换为字符流,以便此字符流包含在另一个python脚本中重构对象所需的所有信息。

请注意,根据文档说明,泡菜模块无法防止错误或者恶意构建的数据。
因此,切勿挑剔从不可信或者未经身份验证的来源收到的数据。

Python Pickle转储

在本节中,我们将学习如何使用Python pickle存储数据。
为此,我们必须首先导入pickle模块。

然后使用pickle.dump()函数将对象数据存储到文件中。
pickle.dump()函数接受3个参数。
第一个参数是您要存储的对象。
第二个参数是通过以" write-binary"(wb)模式打开所需文件而获得的文件对象。
第三个参数是键值参数。
此参数定义协议。
协议有两种类型-pickle.HIGHEST_PROTOCOL和pickle.DEFAULT_PROTOCOL。
请参阅示例代码以了解如何使用pickle转储数据。

import pickle

# take user input to take the amount of data
number_of_data = int(input('Enter the number of data : '))
data = []

# take input of the data
for i in range(number_of_data):
  raw = input('Enter data '+str(i)+' : ')
  data.append(raw)

# open a file, where you ant to store the data
file = open('important', 'wb')

# dump information to that file
pickle.dump(data, file)

# close the file
file.close()

以下程序将提示您输入一些输入。
就我而言,就是这样。

Python Pickle加载

要检索腌制的数据,步骤非常简单。
你必须使用pickle.load()函数来做到这一点。
pickle加载函数的主要参数是您通过以二进制读取(rb)模式打开文件而获得的文件对象。

简单!是不是让我们编写代码以检索使用pickle dump代码腌制的数据。
请参阅以下代码以进行理解。

import pickle

# open a file, where you stored the pickled data
file = open('important', 'rb')

# dump information to that file
data = pickle.load(file)

# close the file
file.close()

print('Showing the pickled data:')

cnt = 0
for item in data:
  print('The data ', cnt, ' is : ', item)
  cnt += 1

输出将如下所示:

Showing the pickled data:
The data  0  is :  123
The data  1  is :  abc
The data  2  is :  !@#$

Python Pickle示例

我制作了一个简短的视频,展示了python pickle示例程序的执行-首先将数据存储到文件中,然后加载并打印它。

如您所见,由python pickle dump创建的文件是二进制文件,并在文本编辑器中显示垃圾字符。

关于Python Pickle的重要说明

关于python pickle模块的几个要点是:

  • 泡菜协议仅适用于Python,因此不保证可以跨语言兼容。
    这意味着您很可能无法传输信息以使其在其他编程语言中有用。

  • 也不能保证不同版本的Python之间的兼容性,因为不是每个Python数据结构都可以由模块序列化。

  • 除非您手动更改,否则默认情况下会使用最新版本的pickle协议。

  • 最后但并非最不重要的一点是,根据文档说明,泡菜模块无法防止错误或者恶意构建的数据。