打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于python的对象序列化介绍

对象:是抽象的概念 如列表 元组 字典 集合 皆为对象

序列化:一种方法。目的:把对象存储在磁盘上(即,将对象转换为字节数据/字符数据)。

这一过程我们借助序列化这一方法实现。

为什么需要序列化和反序列化这一操作呢?

  1.便于存储。序列化过程将文本信息转变为二进制数据流。信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。

  2.便于传输。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把這个对象转换为字节序列,在能在网络上传输;接收方则需要把字节序列在恢复为对象。

两个模块实现序列化

1.pickle模块

pickle模块实现了基本的数据序列化和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

pickle模块中的四个方法:dumps dump loads  load

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#dumps将对象序列化为字节数据
>>> import pickle
>>> ls = [1,2,3]
>>> data = pickle.dumps(ls)
>>> data
b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.'
>>> f=open("a.txt",mode="wb")
>>> f.write(data)
22
>>> f.close()
  
>>> f=open("a.txt",mode="rb")
>>> f.read()
b'\x80\x04\x95\x0b\x00\x00\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=open("a.txt",mode="rb")
>>> f.read()
b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x02K\x03K\x04e.'
  
#loads将字节数据反序列化为对象
>>> f =open("a.txt","rb")
>>> show = f.read()
>>> show
b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.'
>>> show=pickle.loads(show)
>>> show
[1, 2, 3, 4, 5]
>>> f.close()
#load将file中的字节数据反序列化为对象
>>> pickle.load(open("a.txt","rb"))
[1, 2, 3, 4, 5]

2.json模块

json模块是将对象序列化为字符数据,json模块一样有dumps dump loads  load方法,注意:json模块一般是用来序列化字典对象 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#dumps方法
>>> import json
>>> d={"usename":"zhangsan","age":17}
>>> json.dumps(d)
'{"usename": "zhangsan", "age": 17}'
>>> s=json.dumps(d)
>>> f=open("a.txt","wt")
>>> f.write(s)
34
>>> f.close()
  
#loads方法
>>> f=open("a.txt","rt")
>>> ss = f.read()
>>> ss
'{"usename": "zhangsan", "age": 17}'
>>> json.loads(ss)
{'usename': 'zhangsan', 'age': 17}
>>> dd = json.loads(ss)
>>> dd
{'usename': 'zhangsan', 'age': 17}
>>> f.close()

到此这篇关于关于python的对象序列化介绍的文章就介绍到这了,更多相关python对象序列化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python中的json、pickle
Python数据持久化:JSON| 编程派 | Coding Python
序列化——廖雪峰
[Python]Python模块学习 ---- pickle, cPickle 对象序列化/反序列化
超详细的Python文件操作知识
json的序列化与反序列化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服