[Python] Python pickle模块学习

本文介绍了Python的pickle模块,用于对象的序列化和反序列化。pickle提供了一种将Python对象转换为字节流(序列化)和从字节流还原对象(反序列化)的方法,但存在安全性问题,因为没有加密和数字签名。pickle与json的主要区别在于pickle是二进制格式,不具可读性,且是Python特有。文中还列举了pickle的API、可pickle的类型以及示例。
摘要由CSDN通过智能技术生成

概述

Python中提供了三个用于序列化和反序列化的模块:marshal、json和pickle,这里对pickle模块进行总结归纳。

pickle是Python中的一个标准模块,其实现了序列化和反序列化的二进制协议,可以对对象进行序列化和反序列化操作,“Pickling”表示Python对象转换为字节流的过程,这一过程为序列化过程,“Unpickling”和“Pickling”恰好相反,是将字节流转换为Python对象的过程,这一过程也称为反序列化。,但是其缺点是没有加密机制和数字签名,因此安全性差,尽管如此,pickle还是用于处理ad-hoc的理想模式。

优点
  • 使用pickle可以对各种可以pickle的类型进行快速的压缩
缺点
  • 没有安全机制(没有加密机制和数字签名),因此不能对不可信的或为授权的字节流进行反序列化
pickle和json区别
  • 1.json是一种文本序列化格式(它输出unicode文本,虽然大多数时候它被编码为utf-8),而pickle是一种二进制序列化格式;
  • 2.json序列化后的文件具有可读性,而pickle不具有;
  • 3.json广泛用于其他语言汇总,pickle是Python特有的;
  • 4.默认情况下,JSON只能用于Python内置类型的一个子集,并且不包含自定义类; pickle可以用于大量的Python类型。

pickle API

属性

pickle.HIGHEST_PROTOCOL:表示最高可用的pickle协议,在dump()方法和load()方法中作为参数使用,也可以使用在Pickle构造方法中。
pickle.DEFAULT_PROTOCOL:表示默认的pickle协议。

方法

pickle.dump(obj, file, protocol=None, *, fix_imports=True):将pickled的对象写入二进制文件中,和Pickler(file, protocol).dump(obj)方法等价。
pickle.dumps(obj, protocol=None, *, fix_imports=True):将pickled的对象序列化后返回一个byte对象,而不是写入到文件中。
pick

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值