9.1.3 模块接口

pickle.HIGHEST_PROTOCOL

一个整数,表示支持协议的最高版本。

例子:

#python 3.4

import pickle

 

r = pickle.HIGHEST_PROTOCOL

print('version:', r)

结果输出如下:

version: 4

 

pickle.DEFAULT_PROTOCOL

一个整数,表示默认使用的协议版本。

例子:

#python 3.4

import pickle

 

r = pickle.DEFAULT_PROTOCOL

print('version:', r)

结果输出如下:

version: 3

 

pickle.dump(obj, file, protocol=None, *, fix_imports=True)

把一个对象obj打包,并写入文件file。参数protocol是想使用打包协议的版本;参数fix_imports设置为True,如果协议版本小于3,则会尽量按Python2版本来打包。

例子:

#python 3.4

import pickle

 

with open(r'F:\temp\py\pk', 'wb') as f:

    l = [2, 3, 4, 5]

    r = pickle.dump(l, f)

    print(r)

结果输出如下:

None

在这个例子里,把列表对象l进行序列化,再把数据流写入文件对象f,这样就保存到磁盘上了。

 

pickle.dumps(obj, protocol=None, *, fix_imports=True)

把对象obj打包成一个bytes对象返回。参数与上面函数dump()一样。

例子:

#python 3.4

import pickle

 

l = [2, 3, 4, 5]

r = pickle.dumps(l)

print(r)

结果输出如下:

b'\x80\x03]q\x00(K\x02K\x03K\x04K\x05e.'

 

pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict")

从打开的文件里读取一个打包的对象,并解包返回此对象。参数encodingerrors是怎么样解析8位表示的字符串。其它参数与上面的函数是一样的。

例子:

#python 3.4

import pickle

 

with open(r'F:\temp\py\pk', 'rb') as f:

    r = pickle.load(f)

    print(r)

结果输出如下:

[2, 3, 4, 5]

 

pickle.loads(bytes_object, *, fix_imports=True, encoding="ASCII", errors="strict")

bytes字节对象里解包出来Python内部表示的对象。参数bytes_objectbytes表示的对象。其它参数与上面函数一样。

例子:

#python 3.4

import pickle

 

l = [2, 3, 4, 5]

r = pickle.dumps(l)

print(r)

r = pickle.loads(r)

print(r)

结果输出如下:

b'\x80\x03]q\x00(K\x02K\x03K\x04K\x05e.'

[2, 3, 4, 5]

 

exception pickle.PickleError

模块pickle异常基类。

 

exception pickle.PicklingError

当打包一个对象不能打包时,就抛出本异常。

 

exception pickle.UnpicklingError

当在解包时出错,就会抛出此异常。

 

pickle模块里,主要定义了两个类供外面访问:PicklerUnpickler

class pickle.Pickler(file, protocol=None, *, fix_imports=True)

创建一个二进制文件,可以写入打包的数据流到文件。参数file是保存数据的文件名称;参数protocol是可选的协议版本号,值可以设置从0HIGHEST_PROTOCOL,如果没有设置默读值是DEFAULT_PROTOCOL;参数fix_imports设置为True时,当版本号小于3,打包时就会转换Python3版本的名称为Python2版本的名称,以便在Python2版本里可以读取到打包的数据。

 

dump(obj)

本函数是写一个打包的数据对象到已经打开的文件对象里。

 

persistent_id(obj)

本函数默认时,什么也没有做,主要为了给派生类进行继承使用。如果本函数返回None,表示对象obj按普通方式打包;如果返回任何其它值,就会当作储存ID来保存,读取时可以根据这个储存ID来读取出来,比如调用Unpickler.persistent_load()函数来加载。

 

dispatch_table

主要用来为方法__reduce__()保存一个分配表。默认情况下,不会保存一个这样的分配表,使用全局的分配表。如果需要保存一个私有的分配表时需要自己创建一个。

 

fast

本属性已经不再使用。如果设置为True值,表示使用快速模式。

 

class pickle.Unpickler(file, *, fix_imports=True, encoding="ASCII", errors="strict")

从一个二进制文件里读取打包的数据对象。参数file是保存数据的文件名称;参数protocol是可选的协议版本号,值可以设置从0HIGHEST_PROTOCOL,如果没有设置默读值是DEFAULT_PROTOCOL;参数fix_imports设置为True时,当版本号小于3,打包时就会转换Python3版本的名称为Python2版本的名称,以便在Python2版本里可以读取到打包的数据。参数encoding是用来指明采用什么方式来读取8位的字符串对象;参数errors是用来表示读取对象时的错误处理方式。

 

load()

本函数从二进制文件里加载所有认识对象返回。

 

persistent_load(pid)

本函数默认弹出异常错误UnpicklingError

 

find_class(module, name)

本函数从模块module里找到name对象返回,也可以使用于查找函数的返回。

 


蔡军生  QQ:9073204 深圳

你可能感兴趣的:(python,milang)