Python数据处理方式

1. pickle、cPickle方法

1.1 pickle简介

        pickle和cPickle模块是Python提供的用来序列化和反序列化的模块,可以将Python的数据结构转化为字节流(byte stream),其中cPickle是pickle的C语言实现,因此运行速度上会比pickle运行的快的多。但cPickle并不支持类Pickler() and Unpickler()的子类,不过平常使用中很少会用到这功能,因此pickle和cPickle差别不大,并且cPickle可以提供更快的运行速度。

pickle序列化后的字节流类型是python特有的,因此不可以被其他语言的反序列化;同样也不能反序列化其他语言序列化后的东西

pickle的data stream现在有三种格式:

Protocol version 0  序列化后为ASCII格式,兼容以前的格式
Protocol version 1 序列化后为二进制,兼容以前的格式
Protocol version 2 序列化后为二进制,提供了对Python新式类更有效的序列化

如果没有指定protocol,则会默认使用protocol 0。如果protocol被指定为小于0的或者HIGHEST_PROTOCOL,则会使用当前可用的最高版本。建议使用二进制的格式,可以通过指定protocl>0来选择

并不是所有的类型都支持序列化的,以下的类型是支持序列化的:

  • 所有Python支持的 原生类型 : 布尔, 整数, 浮点数, 复数, 字符串, bytes(字节串)对象, 字节数组, 以及 None.
  • 由任何原生类型组成的列表,元组,字典和集合。
  • 由任何原生类型组成的列表,元组,字典和集合组成的列表,元组,字典和集合(可以一直嵌套下去,直至Python支持的最大递归层数).
  • 函数,类,和类的实例(带警告)。

1.2 pickle使用方法

为了序列化一个object hierarchy,你必须先创建一个pickler,可以通过pickle.dump()来实现;同样要想反序列化,你也必须先创建一个unpickler,可以通过pickle.load()来实现


pickle.HIGHEST_PROTOCOL

可以获得可用的最高版本,这个返回值可以作为protocol


pickle.dump(obj,file[,protoc

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值