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
     
  • 相关阅读:
    spring+mybatis多数据源切换
    【linux环境下】RabbitMq的安装和监控插件安装
    Slurm远程登录Jupyter Notebook
    Google Colab 使用
    关于conda和jupyter使用
    关于给C盘扩容以及动态磁盘
    关于使用实验室服务器的GPU以及跑上TensorFlow代码
    一些更改的后端接口和代码
    MarkDown to PDF
    蜗牛慢慢爬 LeetCode 25. Reverse Nodes in k-Group [Difficulty: Hard]
  • 原文地址:https://www.cnblogs.com/kcxg/p/15237124.html
Copyright © 2011-2022 走看看