python对象序列化和反序列化,python序列化的原理和作用
大家好,本文主要是关于python对象序列化的介绍。有兴趣的同学过来看看,如果对你有帮助记得收藏。
对象:这是一个抽象的概念,如列表元组字典集,这些都是对象。
序列化:单程。目的:在磁盘上存储对象(即将对象转换成字节数据/字符数据)。
这个过程是通过序列化的方法实现的。
为什么需要序列化和反序列化这一操作呢?
1.易于储存。序列化过程将文本信息转换为二进制数据流。信息很容易储存在硬盘里。需要读取文件时,可以从硬盘中读取数据,然后反序列化得到原始数据。Python程序在运行过程中获得了一些字符串、列表、字典等数据,想要长期保存,以便以后使用,而不是简单的放在内存中,断电就丢失数据。
2.易于传输。当两个进程进行远程通信时,它们可以互相发送各种类型的数据。无论是什么类型的数据,都会以二进制序列的形式在网络上传输。发送方需要将这个对象转换成一个字节序列,可以在网络上传输。接收方需要将字节序列恢复为一个对象。
两个模块实现序列化
1.pickle模块
Pickle模块实现基本的数据序列化和反序列化。通过pickle模块的序列化操作,我们可以将程序中运行的对象的信息保存到一个文件中永久保存;通过反序列化pickle模块,我们可以从文件中创建最后一个程序保存的对象。
pickle模块中的四个方法:转储转储加载加载
#dumps将对象序列化为字节数据。
进口泡菜
ls=[1,2,3]
data=pickle.dumps(ls)
数据
b \ X80 \ x04 \ x95 \ x0b \ x00 \ x00 \ x00 \ x00 \ x00 \ x94(K \ x01K \ x02K \ x03e
f=打开( a.txt ,mode=wb )
f .写(数据)
22
f.close()
f=打开( a.txt ,mode=rb )
阅读()
b \ X80 \ x04 \ x95 \ x0b \ x00 \ x00 \ x00 \ x00 \ x00 \ x94(K \ x01K \ x02K \ x03e
f.close()
#dump将对象序列化为字节数据,并将其保存到文件file。
ls=[2,3,4]
pickle.dump(ls,open(a.txt ,mode=wb ))
f=打开( a.txt ,mode=rb )
阅读()
b \ X80 \ x04 \ x95 \ x0b \ x00 \ x00 \ x00 \ x00 \ x00 \ x94(K \ x02K \ x03K \ x04e
#loads将字节数据反序列化为对象。
f=打开( a.txt , rb )
show=f.read()
显示
b \ X80 \ x04 \ x95 \ x0f \ x00 \ x00 \ x00 \ x00 \ x00]\ x94(K \ x01K \ x02K \ x03K \ x04K \ x05e
show=pickle.loads(显示)
显示
[1, 2, 3, 4, 5]
f.close()
#load将文件中的字节数据反序列化为一个对象。
pickle.load(open(a.txt , rb ))
[1, 2, 3, 4, 5]
2.json模块
Json模块将对象序列化为字符数据,json模块有相同的dump dump load方法。注意:json模块一般用于序列化字典对象。
#dumps方法
导入json
d={ 用户名 : 张三,年龄 :17}
json.dumps(d)
{ 用户名 : 张三,年龄 : 17}
s=json.dumps(d)
f=打开( a.txt , wt )
f .写
34
f.close()
#loads方法
f=打开( a.txt , rt )
ss=f.read()
悬浮物
{ 用户名 : 张三,年龄 : 17}
json.loads(ss)
{ 用户名 : 张三,年龄 : 17}
dd=json.loads(ss)
截止日期(Deadline Date的缩写)
{ 用户名 : 张三,年龄 : 17}
f.close()
关于python的对象序列化的这篇文章到此为止。有关python的对象序列化的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。