python3 pickle(序列化)

pickle是支持将一个python对象转换成字节流,同时还能将对应的字节流逆操作,得到原来的对象的一个模块


import pickle

# 需要pickle的对象
dict = {
    'jack ma': 'male',
    'ma hua teng': 'male',
    'lei jun': 'male',
    'dong ming zhu': 'female'
    }


# file_name为文件路径
file_name = r'F:\WebSpider' + 'test_pickle'


# pickling
data = pickle.dumps(obj=dict)

with open(file_name, mode='wb') as fp:
    fp.write(data)

# dump 和 dumps的区别, 在于dump中可以传进参数file=文件路径
# pickle.dump(obj, file, protocol=None, *, fix_imports=True), 等价于Pickler(file, protocol).dump(obj).
# pickle.dumps(obj, protocol=None, *, fix_imports=True)


# loads() 将pickle后的文件逆操作获得原来的对象
with open(file_name, mode='rb') as fp:
    data = pickle.loads(fp.read())
    print(data)


# load() 和 loads()的区别:
# pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict"), 等价于Unpickler(file).load()
# pickle.loads(bytes_object, *, fix_imports=True, encoding="ASCII", errors="strict")


个人喜好,比较倾向使用dumps()和loads()


需要了解的是dumps()中的参数protocol,目前已经有5种不同的协议。

常量:

pickle.HIGHEST_PROTOCOL  (int, 代表目前最高可用的协议)

pickle.DEFAULT_PROTOCOL  (int, 此时代表的是第三种协议,为py3所设计的)


其他的参数和方法没有深究

当pickle一个不可pickle的obj时,将触发PicklingError

详细请查阅文档

文档:pickle — Python object serialization

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值