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")
从打开的文件里读取一个打包的对象,并解包返回此对象。参数encoding和errors是怎么样解析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_object是bytes表示的对象。其它参数与上面函数一样。
例子:
#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模块里,主要定义了两个类供外面访问:Pickler和Unpickler。
class pickle.Pickler(file, protocol=None, *, fix_imports=True)
创建一个二进制文件,可以写入打包的数据流到文件。参数file是保存数据的文件名称;参数protocol是可选的协议版本号,值可以设置从0到HIGHEST_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是可选的协议版本号,值可以设置从0到HIGHEST_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 深圳