pickle,struct,ujson,orjson 模块

Posted 妞妞牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\'\\x80\\x03]q\\x00(X\\x02\\x00\\x00\\x00aaq\\x01X\\x02\\x00\\x00\\x00bbq\\x02X\\x02\\x00\\x00\\x00ccq\\x03e.

反序列化

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\'\\x00\\x01\\x00\\x02\\x00\\x00\\x00\\x03\'
>>> unpack(\'hhl\', b\'\\x00\\x01\\x00\\x02\\x00\\x00\\x00\\x03\')//将数据进行解包操作
(1, 2, 3)
>>> calcsize(\'hhl\')
8

以上是关于pickle,struct,ujson,orjson 模块的主要内容,如果未能解决你的问题,请参考以下文章

python-时间模块,randomossysshutiljson和pickle模块

scala ujson.read() 返回 ujson.Obj

AWS Lambda -- 无法为 SpaCy 导入 srsly.ujson.ujson

如何保存具有元组键的字典

Python中的ujson包安装错误

在 ubuntu 中安装 ujson 的问题