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()

本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1873253

相关文章
|
8月前
|
存储 算法 Python
Python算法——树的序列化与反序列化
Python算法——树的序列化与反序列化
167 1
|
2月前
|
JSON 缓存 安全
Python 的其他应用: 解释什么是 Python 的 pickle 模块?
Python 的其他应用: 解释什么是 Python 的 pickle 模块?
|
1月前
|
JSON 安全 数据格式
详解python pickle中的反序列化漏洞
今天我们来聊聊Python里的反序列化攻击。先来看看什么是序列化和反序列化。简单来说,序列化就是把数据结构转换成字节流,这样我们就可以把数据保存到文件里或者通过网络传输。反序列化则是把这些字节流再转换回原来的数据结构。 在Python里,常用的模块之一就是Pickle。它可以帮我们很方便地进行序列化和反序列化操作。比如,你可以把一个复杂的Python对象序列化保存下来,等需要用的时候再反序列化回来。 反序列化攻击的概述 反序列化过程有漏洞:如果我们反序列化了一个不可信的数据源,那就可能引发反序列化攻击。攻击者可以在序列化的数据里嵌入恶意代码,当你反序列化这个数据时,这些恶意代码就会被执
|
2月前
|
存储 JSON PHP
python序列化与反序列化
python序列化与反序列化
|
2月前
|
存储 编解码 Python
初出茅庐,python模块篇:pickle模块和pathlib模块(太过详细,篇幅较长)_python文件操作模块有pickle模块
初出茅庐,python模块篇:pickle模块和pathlib模块(太过详细,篇幅较长)_python文件操作模块有pickle模块
|
2月前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
36 0
|
2月前
|
存储 JSON 安全
Python中对象到文件的序列化和反序列化
【4月更文挑战第2天】在Python编程中,序列化和反序列化是处理对象与文件之间转换的重要技术。序列化是将对象状态转换为可以存储或传输的形式的过程,通常是将对象转换为字节流。反序列化则是将序列化后的形式转换回对象的过程。在Python中,我们可以使用`pickle`模块来轻松地实现对象的序列化和反序列化。
|
2月前
|
存储 JSON JavaScript
Python中的JSON与Pickle模块:数据序列化和反序列化的利器
在Python编程中,数据的序列化和反序列化是经常遇到的操作。序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,而反序列化则是这个过程的逆操作,即将序列化的数据重新转换回原来的数据结构或对象状态。Python中的JSON和Pickle模块就是实现数据序列化和反序列化的强大工具。
|
2月前
|
存储 JSON 安全
序列化模块pickle和json有什么区别
序列化模块pickle和json有什么区别
40 0
|
2月前
|
Go Python 算法
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
754 0
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点