python中的pickle模块

本文介绍了Python中的pickle模块,用于将Python对象转化为二进制字节流进行存储。cPickle在Python2中存在,Python3中变为pickle。pickle模块提供dump、dumps、load和loads四个主要接口,用于对象的序列化和反序列化操作。通过pickle,可以对任意Python对象进行持久化存储,包括自定义对象。在解析numpy数组时,可能需要特别设置encoding参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pickle和cPickle

最近在Dex-Net的源码中看到他们使用cPickle模块进行数据的缓冲,于是决定学习一下pickle模块
cPickle模块是python2标准库中自带的,在python3中变成了pickle,模块在标准库中API文档如下

https://docs.python.org/3/library/pickle.html

其中详细介绍了该模块的使用方法,pickle主要用来存储python对象,pickle把python对象存储为二进制字节流的形式,相比使用json,pickle可以对任意的python对象进行存储,包括自己定义的python对象。
要使用这个模块主要有以下四个接口函数。

  1. pickle.dump(obj, file, protocol=None, *, fix_imports=True)
    把python对象写入一个文件,file是一个打开文件,必须拥有单字节的write()方法。
import pickle

# An arbitrary collection of objects supported by pickle.
data = {
    'a': [1, 2.0, 3, 4+6j],
    'b': ("character string", b"byte string"),
    'c': {None, True, False}
}

with open('data.pickle', 'wb') as f:
    # Pickle the 'data' dictionary using the highest protocol available.
    pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)
  1. pickle.dumps(obj, protocol=None, *, fix_imports=True)
    把python对象转换为pickle字节流并返回,而不是写入文件
  2. pickle.load(file, *, fix_imports=True, encoding=“ASCII”, errors=“strict”)
    从文件中加载一个python对象,该文件必须拥有read()和readline()方法,在解析numpy数组时需要设置encoding=‘latin1’,更多细节见API文档
import pickle

with open('data.pickle', 'rb') as f:
   # The protocol version used is detected automatically, so we do not
   # have to specify it.
   data = pickle.load(f)
  1. pickle.loads(bytes_object, *, fix_imports=True, encoding=“ASCII”, errors=“strict”)
    从一个字节流对象中加载一个python对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值