python pickle反序列化,python中pickle模块

  python pickle反序列化,python中pickle模块

  本文主要介绍Python数据序列化的pickle模块。pickle的本质是将Python数据在内存中还原成二进制数据,用户可以进行传输和存储。有关更多详细信息,请参考以下文章。

  00-1010 1将Python数据存储为本地文件存储过程加载过程将Python数据存储为程序的一部分存储过程加载过程前言:

  英语中,泡菜名词的意思是泡菜,动词的意思是泡菜。可以理解为把东西腌起来存成文件,用之前读出来洗干净。

  Python的pickle模块实现了基本的数据序列化和反序列化。

  序列化可以将对象保存在磁盘上,并在需要时读取它们。任何对象都可以序列化。

  pickle的本质是将Python数据在内存中还原为二进制数据,供用户传输和存储。

  pickle模块通常会在2种场景下使用:

  将Python的数据保存为磁盘上的二进制文件,需要时读取并恢复为Python数据。它可以是可打印的基本数据(字符串、列表、字典等)。)或不可打印的类数据。相比之下,Json只能保存可以打印的基础数据。将创建的类数据串起来,保存为一个变量。程序下次运行时,直接读取变量,还原成类数据,省去了创建类数据的过程。

  

目录

 

  设计一个程序,输出的产品是Excel工作簿output.xlsx,工作簿中有一个工作表out_sheet是从标准文档input.xlsx中的in_sheet复制过来的

  工作表in_sheet的内容非常庞大,很难手工重现。通常我们选择把标准文档input.xlsx作为程序在项目中的参考资料。在程序运行期间,将工作表in_sheet复制到工作表out_sheet。

  如果我们要求工作表in_sheet文件不能以纯文本方式存储,只能存储工作表对应的Worksheet()数据,就会用到pickle模块。

  

1 将Python数据存储为本地文件

 

  进口泡菜

  从openpyxl导入load_workbook

  #创建类数据

  wb=load_workbook(input.xlsx )

  ws=wb[in_sheet]

  #将in_sheet复制到out_sheet

  #注意,这里的usr_copy_sheet()是自定义方法,openpyxl自带的copy_sheet()不能在不同的工作簿中复制工作表。

  usr_copy_sheet(ws,out_ws)

  #将out_ws转换为二进制数据

  obj=pickle.dumps(out_ws)

  #要将二进制数据保存到本地文件,必须使用二进制写入。

  用open(file=data.txt ,mode=wb )作为f:

  f .写(obj)

  此时ws存储在本地文件data.txt中,用二进制乱码打开。

  

存储过程

 

  进口泡菜

  从openpyxl.worksheet.worksheet导入工作表

  #创建空的类数据来接收数据。如果类有父属性,则必须与要接收的数据一致。

  out_ws=工作表(parent=out_wb)

  #要将本地文件数据加载到类数据中,必须使用二进制文件打开文件。

  用open(file=data.txt ,mode=rb )作为f:

  out_ws=pickle.loads(f.read())

  您可以保存读取工作表in_sheet、复制到工作表out_sheet等过程。

  

加载过程

 

  如果我们要求工作表in_sheet文件的数据不仅可以以纯文本的形式存储,而且不能作为外部文件使用。这一定是程序的一部分。以防止其丢失。有些小程序总共只有一个exe文件,插一个文件不方便。此时可以使用pickle模块。

  

2 将Python数据存储为程序的一部分

 

  进口泡菜

  从openpyxl导入load_workbook

  #创建类数据

  wb=load_workbook(input.xlsx )

  ws=wb[in_sheet]

  #将in_sheet复制到out_sheet

  #注意,这里的usr_copy_sheet()是自定义方法,openpyxl自带的copy_sheet()不能在不同的工作簿中复制工作表。

  usr_copy_sheet(ws,out_ws)

  #将out_ws转换为二进制数据

  obj=pickle.dumps(out_ws)

  #将二进制数据保存为py文件,必须用文本编写。

  用open(file=out_sheet.py ,mode=w )作为f:

  #将二进制数据转换为B XXX 字符串,并将其写入py文件

  data=data= str(obj)。替换( b , b )

  f .写(数据)

  此时,out_ws存储在内容是一串二进制码:.的本地文件out_sheet.py中

  数据=b x80 x04 .

  

存储过程

 

  将生成的out_sheet.py加载到程序中,直接读取数据。

  进口泡菜

  从openpyxl.worksheet.worksheet导入工作表

  导入输出_工作表

  #创建空的类数据来接收数据。如果类有父属性,则必须与要接收的数据一致。

  out_ws=工作表(parent=out_wb)

  #直接读取out_sheet.py文件中的数据变量

  out _ ws=pickle . loads(out _ sheet . data)

  Out_sheet.py最终会被编译成程序的一部分。

  关于Python数据序列化的pickle模块的这篇文章到此为止。关于Python中pickle模块的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: