Python之pickle序列化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之pickle序列化相关的知识,希望对你有一定的参考价值。

    内存中有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?这取决于你想要怎么保存、怎么重用、发送给谁。很多游戏允许你在退出时保存进度,然后你再次启动的时候回到上次退出的地方。(实际上,很多非游戏程序也会这么干。)在这个情况下,一个捕获了当前进度的数据结构需要在你退出的时候保存到磁盘上,接着你重新启动的时候从磁盘上加载进来。

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

什么东西能用pickle模块存储?
--所有python支持的原生类型:布尔、整数、浮点数、复数、字符串、bytes(字节串)对象,字节数组,以及None
--由任何原生类型组成的列表、元组、字典
--由任何原生类型组成的列表、元组、字典和集合组成的列表、元组、字典和集合(可以一直嵌套下去,直至python支持的最大递归层数)
--函数、类和类的实例

d=[1,2,3,4,5,6]
f=file(‘test.txt‘,‘w‘)
f.write(d) // 只能将字符串写入,无法将列表、字典等类型写入文件中,这时使用pickle
f.close()

import pickle
account_info={‘123‘:[‘alex3721‘,125000,1233000],‘355‘:[‘rachel‘,9000,9000]}

f=file(‘account.pkl‘,‘wb‘)
pickle.dump(account_info,f) //把内存里的东西dump到磁盘
f.close()

##反序列化

f=open(‘account.pkl‘,‘rb‘)
account_info=pickle.load(f)
print account_info

#####

pickle
account_info={:[,,],:[,,]}
f=(,)
pickle.dump(account_info,f)

account_info[][]=pickle.dump(account_info,f)
f.close()
f=(,)

,acc1#保存了2次的状态,或者N次
acc2
f.close()


本文出自 “DBSpace” 博客,请务必保留此出处http://dbspace.blog.51cto.com/6873717/1873253

以上是关于Python之pickle序列化的主要内容,如果未能解决你的问题,请参考以下文章

python3之序列化(pickle&json)

Python之pickle

Python常用模块之pickle——对象序列化

python 序列化模块之 json 和 pickle

python序列化之pickle,json,shelve

Python 入门之 内置模块 -- 序列化模块(json模块pickle模块)