【Python之旅】第三篇(二):Pickle序列化
摘要: 说明:关于Pickle的说明 作如下说明: 1 2 3 4 5 6 7 序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重用,或者发送给其他人。你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的时候保存进度,然后你再次启动的时候...
说明:关于Pickle的说明
作如下说明:
1 2 3 4 5 6 7 |
|
1.Pickle的简单介绍与使用
·简单说明如下:
a.字典的数据结构在内存中存储,保存为文件无法识别,如果要保存,并在下一次打开时还能用,需要做Pickle序列化存储;
b.读取时需要反序列化;
c.pickle可以把程序的执行进度都保存下来;
·给出实例1:Pickle只保存一种状态
a.存储序列化
1 2 3 4 5 6 7 8 9 10 11 |
|
b.读取序列化
1 2 3 4 5 6 7 8 9 |
|
c.执行结果如下:
1 2 3 |
|
d.生成的account.pkl中保存了字典的状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
·实例2:Pickle保存多种状态
a.存储序列化代码修改为如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
b.执行存储序列化程序,使两次状态保存到文件中:
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 |
|
c.在交互器中测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
·可在一个文件中保存多个状态(dump),但是得一个一个地调取状态(load),不建议这样做;
2.Pickle的其它说明与使用
·序列化使得不同程序之间可以交互数据的读取;
·Pickle中的dump()只能将数据结构的序列化存储在磁盘中,然后load()再通过反序列化调用磁盘的相关文件;
·使用Pickle的dumps()与loads()则可以直接在内存中操作:
1 2 3 4 5 6 7 |
|
·只需提供操作接口即可实现动态地交互程序的状态(游戏进度切换的例子,P1--P2,P1实时将游戏进度交给P2);
·与Pickle有同样重要的是json,用法与Pickle类似;
·序列化的思想对于不同平台和不同编程语言的数据结构交互有着重要的作用,由于未深入学习,这里不作说明。