zoukankan      html  css  js  c++  java
  • pickle,struct,ujson,orjson 模块

    1.pickle模块实现了用于序列化和反序列化python的对象二进制协议。也就是在python中特有模块,可以将特定数据类型序列化成只有python认识的字符串,pickle提供了四种方法,load,dump 主要是针对文件 ,loads和dumps主要针对于数据

    序列化示并写入文件中

     
     
    import pickle
     
    data = {
        'a': [1, 2.0, 3, 4+6j],
        'b': ("character string", b"byte string"),
        'c': {None, True, False}
    }
     
    with open('mydata.pickle', 'wb') as myfile:
        pickle.dump(data, myfile)
     

     反序列化示例

     
    import pickle
     
    with open('mydata.pickle', 'rb') as myfile:
        data = pickle.load(myfile)

    针对于数据序列化

     
     
    1 # dumps功能
    2 import pickle
    3 data = ['aa', 'bb', 'cc']  
    4 # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
    5 p_str = pickle.dumps(data)
    6 print(p_str)            
    7 b'x80x03]qx00(Xx02x00x00x00aaqx01Xx02x00x00x00bbqx02Xx02x00x00x00ccqx03e.
     

    反序列化

     
    1 # loads功能
    2 # loads  将pickle数据转换为python的数据结构
    3 mes = pickle.loads(p_str)
    4 print(mes)
    5 ['aa', 'bb', 'cc']

    pickle模块与json模块的对比
    pickle模块实现的二进制转换协议与json模块实现的JSON格式转换协议完全不同。
    JSON格式是一个文本序列化格式。pickle字节流格式是一个二进制序列化格式。
    JSON是人可读的,而pickle字节流无法供人阅读。
    JSON多用于与外部其他系统的交互,而pickle字节流仅供Python内部读写。
    JSON只能表示Python内置类型,而pickle字节流可以表示开发人员定制类型。

    struck模块:该模块在Python值和表示为Python bytes对象的C缓冲区结构体之间进行转换。可用于处理存储在文件中或者来自网络连接,以及其它来源的二进制数据。

    struct.pack_into(ftm, buffer, offset, v1, v2, ...)

    根据格式化字符串fmt,封装v1v2等值,并从位置offset开始,将封装的字节写入可写缓冲区buffer中。注意,offset是必需的参数。

    struct.unpack(fmt, buffer)

    根据格式化字符串fmt,从缓冲区buffer(假设由pack(fmt, ...)封装)中解包。即使结果只包含一项,也是一个元组。缓冲区的大小(以字节为单位)必需与格式所需的大小匹配,比如calcsize()所得的结果。
    fmt的主要参数有
     
     
    >>> from struct import *
    >>> pack('hhl', 1, 2, 3)//   将数据打包成二进制的字符串
    b'x00x01x00x02x00x00x00x03'
    >>> unpack('hhl', b'x00x01x00x02x00x00x00x03')//将数据进行解包操作
    (1, 2, 3)
    >>> calcsize('hhl')
    8
     
  • 相关阅读:
    Ubuntu Linux Matlab 安装 中文乱码 桌面启动器 Could not find the main class: java/splash.png. 终端terminal 直接运行 matlab
    Ubuntu Linux 官网 u盘安装 u盘系统 图文教程
    从google map google earth获得大图 方法总结
    论文查重网址
    [ZZ] Computer Science Conference Rankings
    Ubuntu linux 信使 iptux Window 飞鸽 ipmsg 飞秋 feiq 文件传输
    Ubuntu Linux Matlab mex
    Ubuntu Dell OptiPlex 990 Intel Gigabit CT Desktop Adapter网卡驱动安装
    C++的File类文件操作
    GIS软件比较
  • 原文地址:https://www.cnblogs.com/kcxg/p/15237124.html
Copyright © 2011-2022 走看看