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

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

No More Bullshit!

首先导入pickle模块:

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

示例:

输出:

Screen Shot 2016-01-31 at 18.32.04

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

pickle用法总结:

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

有一点需要注意,pickle还有一个c版本cpickle,它的执行效率是pickle的1000倍。

为了兼容,导入方法如下:

虽然cpickle效率比较高,但是不建议使用,因为:

  1. pickle可以处理unicode对象
  2. pickle是纯Python写的,调试简单

更详细信息,看官方文档:http://docs.python.org/2/library/pickle.html

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注