用pickle存储Python的原生对象方法


Posted in Python onApril 28, 2017

在Python中存储数据到文件中时,简单的做法是调用open函数执行文件写入操作,但是这样做的话,当我们要重新读取文件内容时,就会出现类型不匹配的情况,因为读取的都是字符串的形式,所以还需要进行类型转换,这样不简洁。

或者使用eval函数把字符串转换为对象,但是有时它过于强大,它会执行Python的任何表达式,甚至做出威胁系统正常工作的表达式,这样做不安全。

如果想存储Python原生对象,但又无法信赖文件的数据来源,那么pickle模块会是个理想的选择。

pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求我们把字符串转换来转换去,像是个超级通用的数据格式化和解析工具。

demo.py:

D = {'name':'Allen', 'age':21}
f = open('p_data.pkl','wb')
import pickle
pickle.dump(D,f)
f.close()

f=open('p_data.pkl','rb')
e=pickle.load(f)
print(e)
print(type(e))

控制台输出:

{'name': 'Allen', 'age': 21}
<class 'dict'>
[Finished in 0.4s]

然后它会在指定路径下生成p_data.pkl文件:

8003 7d71 0028 5804 0000 006e 616d 6571
0158 0500 0000 416c 6c65 6e71 0258 0300
0000 6167 6571 034b 1575 2e

如果控制台提示”attributeError:'module' object has no attribute ‘dump'”,那么很可能是因为你的文件名命名为”pickle.py”,这与内置模块文件重名了,改一下就可以了。。

以上这篇用pickle存储Python的原生对象方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式match和search用法实例
Mar 26 Python
python抓取最新博客内容并生成Rss
May 17 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
基于DataFrame改变列类型的方法
Jul 25 Python
python调用百度REST API实现语音识别
Aug 30 Python
pytorch实现CNN卷积神经网络
Feb 19 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 Python
如何利用opencv判断两张图片是否相同详解
Jul 07 Python
Python标准库之collections包的使用教程
Apr 27 #Python
Golang与python线程详解及简单实例
Apr 27 #Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 #Python
详解Python 2.6 升级至 Python 2.7 的实践心得
Apr 27 #Python
Python中创建字典的几种方法总结(推荐)
Apr 27 #Python
Python中index()和seek()的用法(详解)
Apr 27 #Python
Python中几种导入模块的方式总结
Apr 27 #Python
You might like
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
微信小程序实现订单倒计时
2020/11/01 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python中for循环控制语句用法实例
2015/06/02 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Python 变量的创建过程详解
2019/09/02 Python
Django 批量插入数据的实现方法
2020/01/12 Python
python dumps和loads区别详解
2020/02/04 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
北京某公司的.net笔试题
2014/03/20 面试题
毕业生多媒体设计求职信
2013/10/12 职场文书
工作中个人的自我评价
2013/12/31 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
redis实现排行榜功能
2021/05/24 Redis