python 的两个modules pickle 和 cPickle

来源:互联网 发布:电脑拨号打电话软件 编辑:程序博客网 时间:2024/05/16 01:28

pickle module 里面implement了一些具有serilizing 和de-serilizing a Python object structure 功能的fundamental but powerful 的algorithms。 

Q: 什么是serializing 和de-serializing??

这是两个计算机上的术语, 翻译过来就是序列化(serialization)。也就是将一个python 文件对象 converting to a byte stream(字节流)。 de-serialization 做的是相反的操作。 也就是将一个byte stream转换为一个object hierarchy。 也就是说, 我们可以使用pickle模块把python 对象直接保存到文件中, 而不需把他们转换为字符串。 你不需要考虑任何细节, just use it。

在这里, pickling和unpickling 同 serialization和de-seralization分别 可以交换使用。

应用百度百科一句话:序列化,序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

Warning

 

The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.



pickle 具有两个重要的函数, 一个是dump(), 作用是接受一个文件句柄和一个数据对象作为参数, 把数据对象以特定的格式保存到给定的文件中。 另一个函数是load(), 作用是从文件中取出已保存的对象, pickle 知道如何恢复这些对象到他们本来的格式。

使用方式如下:

pickle.dump(objfile[protocol]) // 将obj指定的python 对象存放到File中


pickle.load(file)


接下来说说cPickle module。

cPickle 是pickle的一个更快的c语言编译版本。 可以说是

A faster pickle。

The cPickle module supports serialization and de-serialization of Python objects, providing an interface and functionality nearly identical to the pickle module.



在notepad++ 输入程序如下。

import cPickle, gzip, numpy#Load the datasetf = gzip.open('E:\pythonLearning\mnist.pkl.gz', 'rb')train_set, valid_set, test_set = cPickle.load(f)f.close()

运行程序如下:

附: notepad++ 保存快捷键是ctrl + shift + save.

还有一个提高程序员工作效率的快捷键是Alt + Tab 用于切换窗口。 快速run 的快捷键是F5.






 




0 0