python模块:pickle(对象序列化和反序列化)

Pickle模块用来对Python对象执行序列化和反序列化。Python的任何对象都可以通过它永久保存到硬盘文件。Pickle实际上是先把Python对象(list、dict、class等)转换为字符流,这个字符流包含反序列化(从字符流构建对象)所需的所有数据。

No More Bullshit!
首先导入pickle模块:

import pickle

pickle有两个主要方法。第一个是dump-把对象导入到文件;第二个是load-从文件中加载对象。
示例:

import pickle
 
l1 = ['data1','data2','data3', 'data4']
 
file = open("testfile",'wb') 
 
# 把l1保存到文件
pickle.dump(l1, file)   
 
file.close() 
 
####################################
 
file = open("testfile",'r')
 
# 从文件中加载保存的对象
l2 = pickle.load(file)  
 
print(l2)
print(l1 == l2)

输出:


Screen Shot 2016-01-31 at 18.32.04

你可以看一下testfile文件中的内容,里面是可读的文件(不是二进制流)。

$ cat testfile 
(lp0
S'data1'
p1
aS'data2'
p2
aS'data3'
p3
aS'data4'
p4

pickle用法总结:
把程序执行状态保存到文件,在下次启动程序时恢复到退出时的状态。
在分布式系统中通过TCP连接发送数据。
在数据库中存储Python对象
把不可读的Python对象转为字符串,可以用来做字典的key(可以用来做缓存)。

有一点需要注意,pickle还有一个c版本cpickle,它的执行效率是pickle的1000倍。
为了兼容,导入方法如下:

try:
  import cPickle as pickle
except ImportError:
  import pickle

虽然cpickle效率比较高,但是不建议使用,因为:
pickle可以处理unicode对象
pickle是纯Python写的,调试简单

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 3,092评论 0 10
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,631评论 1 118
  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 3,976评论 0 13
  • 今天是儿童节耶,好开心哟。 今天放假在家宅了一天,看电影,看电视,看书,搞搞卫生,做做饭给自己吃,一天就这么过去了...
    山顶的黑狗兄阅读 164评论 0 0
  • 李凤琴阅读 163评论 0 0