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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。