pickle模块用于python对象的序列化和反序列化,可将列表、字典、类实例等保存到文件或用于网络传输;基本用法包括使用pickle.dump()写入数据和pickle.load()读取数据;需注意其生成的是二进制格式,仅限python内部使用,存在安全风险和版本兼容性问题,不适用于跨语言场景。

Python中的pickle模块用于将Python对象转换为字节流,这个过程叫做“序列化”;反过来,从字节流重新构建对象的过程叫做“反序列化”。它能保存和恢复几乎任何Python对象的完整状态,比如列表、字典、类实例等。
主要用途
你可以在以下场景中使用pickle:
- 把程序中的数据对象保存到文件,方便下次运行时直接加载
- 在网络传输中发送复杂对象(需配合socket或其他通信方式)
- 缓存计算结果,避免重复执行耗时操作
基本用法
使用pickle非常简单。下面是一个保存和读取对象的例子:
import pickle
<h1>要保存的数据</h1><p>data = {'name': 'Alice', 'age': 25, 'scores': [88, 92, 79]}</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/code/10691" title="TayCMS免费企业建站系统1.8 for PHP"><img
src="https://img.php.cn/upload/webcode/000/000/010/176333760329079.jpg" alt="TayCMS免费企业建站系统1.8 for PHP" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/code/10691" title="TayCMS免费企业建站系统1.8 for PHP">TayCMS免费企业建站系统1.8 for PHP</a>
<p>由于精力有限,程序更新比较慢,请大家谅解,再次感谢支持taycms的朋友们,虽然比较慢,我们还是会一直更新下去的。谢谢您的关注。有什么建议可以到论坛提出,或者直接给我QQ留言。 2.0会有很多新功能,请关注官方论坛TayCMS 1.8 升级日志此版本修复了不少BUG1.更换图片切换JS , 不会再有错误提示2.增加资料下载模块3.更换默认模版,使程序功能和页面结构更清晰,方便参考制作模版4.修复留</p>
</div>
<a href="/xiazai/code/10691" title="TayCMS免费企业建站系统1.8 for PHP" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/00968c3c2c15" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">Python免费学习笔记(深入)</a>”;</p><h1>写入文件</h1><p>with open('data.pkl', 'wb') as f:
pickle.dump(data, f)</p><h1>从文件读取</h1><p>with open('data.pkl', 'rb') as f:
loaded_data = pickle.load(f)</p><p>print(loaded_data) # 输出原字典
</font>注意事项
pickle虽然方便,但也有几个关键点需要注意:
- pickle生成的内容是二进制的,不能用文本编辑器查看或修改
- 只应在可信环境中使用,因为加载恶意构造的pickle数据可能导致代码执行
- 不同Python版本之间可能存在兼容性问题,尤其是涉及类定义时
- 不能跨语言使用,Java或C++无法读取pickle文件
基本上就这些。pickle适合在Python内部做数据持久化,但如果需要通用性或安全性更高的方案,可以考虑json或h5py等替代方式。










