IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]9.1.3 模块接口

    caimouse发表于 2016-04-18 22:48:29
    love 0

    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 深圳



沪ICP备19023445号-2号
友情链接