前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >序列化与反序列化

序列化与反序列化

作者头像
py3study
发布2020-01-17 16:08:25
发布2020-01-17 16:08:25
74100
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

序列化(pickling)   把变量从内存中变成可存储或传输的过程 反序列化(unpickling)   把变量内容从序列化的对象重新读到内存里的过程

序列化&反序列化的意义   在程序运行过程中,对象可在内存中被自由的修改   一旦程序结束,对象所占内存会被系统回收,所做修改会全部丢失,要想在内存中将对象恢复到修改后状态,就只能重新运行程序进行修改   通过序列化和反序列化,就可把对象某一时刻在内存中的内容状态同步到磁盘,或通过网络传输到别的机器上最为一个记录   当想在内存中恢复该对象在那一时刻的状态时,就可通过将磁盘或其他机器上记录的对象状态反序列化至内存,而无需重新运行程序

实例

代码语言:javascript
代码运行次数:0
运行
复制
import pickle##引入pickle模块
    
d = dict(name='Bob', age=20, score=88)
bytes = pickle.dumps(d)     ##pickle.dumps()方法把任意对象序列化成一个bytes
##bytes -> b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'

d1 = pickle.loads(bytes)     ##pickle.loads()方法把bytes反序列化出对象
print(d1)
        
##################################################
    
import pickle
d = dict(name='Bob', age=20, score=88)
f = open('dump.txt', 'wb')
pickle.dump(d, f)     ##直接把对象序列化后写入一个file-like Object
f.close()

f1 = open('dump.txt', 'rb')
d1 = pickle.load(f)     ##用pickle.load()方法从一个file-like Object中直接反序列化出对象
f1.close()    
print(d1)

注意:

  不同版本的Python彼此都不兼容,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系   反序列化后的对象是一个新的对象

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档