最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎么使用pickle存储Python的原生对象
时间:2017-05-02 编辑:简简单单 来源:一聚教程网
在Python中存储数据到文件中时,简单的做法是调用open函数执行文件写入操作,但是这样做的话,当我们要重新读取文件内容时,就会出现类型不匹配的情况,因为读取的都是字符串的形式,所以还需要进行类型转换,这样不简洁。
或者使用eval函数把字符串转换为对象,但是有时它过于强大,它会执行Python的任何表达式,甚至做出威胁系统正常工作的表达式,这样做不安全。
如果想存储Python原生对象,但又无法信赖文件的数据来源,那么pickle模块会是个理想的选择。
pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,并不要求我们把字符串转换来转换去,像是个超级通用的数据格式化和解析工具。
demo.py:
代码如下 | 复制代码 |
D={'name':'Allen','age':21} f=open('p_data.pkl','wb') importpickle 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} [Finishedin0.4s] |
然后它会在指定路径下生成p_data.pkl文件:
代码如下 | 复制代码 |
80037d71002858040000006e616d6571 015805000000416c6c656e7102580300 000061676571034b15752e |
如果控制台提示”attributeError:'module' object has no attribute ‘dump'”,那么很可能是因为你的文件名命名为”pickle.py”,这与内置模块文件重名了,改一下就可以了。。
相关文章
- PHP导出数据超时的优化建议解读 10-31
- PHP之mysql位运算解析 10-31
- Laravel实现登录跳转功能解析 10-31
- php双向队列解读 10-31
- Laravel异常上下文解决教程 10-24
- php数组查询元素位置方法介绍 10-24