床头笔记之pickle模块

pickle模块用于Python对象的序列化和反序列化,支持自定义类实例的序列化。它有多种协议版本,其中协议4支持大对象和更多类型。pickle能将对象转化为字节流,适用于存储或传输。在Python 3中,使用pickle需以二进制模式读写,否则会报错。与其他序列化模块如json和marshal相比,pickle更专注于Python对象的序列化,而json更易读且跨平台。
摘要由CSDN通过智能技术生成

pickle模块简介

  • pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。
  • “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。
  • 使用的数据格式pickle是特定于Python的,意味着非Python程序可能无法重建pickle Python对象。

直观理解:

pickle模块就是把对象(list,set,dict,object等对象)编码成二进制(为了存储),同时又可以从二进制(缓存或者文件里)加载即解码回来成原先的对象。
注意:要是自定义类对象(非list,set,dict等吧内置类)需要先定义好,再加载load,否则会报错找不到类

其它类似模块:

marshal:

Python有一个更原始的序列化模块marshal,但通常pickle应该始终是序列化Python对象的首选方法。 marshal主要用于支持Python的.pyc 文件。
比较:

  • 该pickle模块跟踪它已经序列化的对象,以便稍后对同一对象的引用不会再次序列化。 marshal不这样做。
  • marshal不能用于序列化用户定义的类及其实例。 pickle可以透明地保存和恢复类实例,但是类定义必须是可导入的,并且与存储对象时存在于同一模块中。
  • 该marshal序列化格式是不能保证整个Python版本移植。因为它的主要工作是支持
    .pyc文件,所以Python实施者保留在需要时以非向后兼容的方式更改序列化格式的权利。该pickle序列化格式是保证不同的Python版本向后兼容。
json:
  • JSON是一种文本序列化格式(它输出unicode文本,虽然大部分时间它被编码utf-8),而pickle是二进制序列化格式;
  • JSON是人类可读的,而pickle不是;
  • JSON是可互操作的,并且在Python生态系统之外广泛使用&#x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值