这里有新鲜出炉的 Python 教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
下面小编就为大家带来一篇用 pickle 存储 Python 的原生对象方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在 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 的原生对象方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ。
来源: http://www.phperz.com/article/17/0524/334863.html