当前位置: 首页 > news >正文

Python中cPickle

cPickle模块:

在python中,一般可以使用pickle类来进行python对象序列化,而cPickle提供了一个更快速简单的接口,如python文档所说:“cPickle - A faster pickle”。

cPickle可以对任意一种类型的python对象进行序列化操作,比如:list, dict,甚至是一个类的对象等。而所谓的序列化,是为了能完整地保存并能够完全可逆的恢复。在cPickle中,主要有4个函数:

1. dump:将python对象序列化保存到本地的文件

import cPickle

data = range(1000)
cPickle.dump(data, open("test\\data.pkl", "wb"))

dump函数需要指定两个参数,第一个是需要序列化的python对象名称,第二个是本地的文件,需要注意的是,在这里需要使用open函数打开一个文件,并指定“写”操作。

 

2. load载入本地文件,恢复python对象

data = cPickle.load(open("test\\data.pkl", "rb"))

使用open函数打开本地的一个文件,并指定“读”操作。

 

3. dumps:将python对象序列化保存到一个字符串变量

data_string = cPickle.dumps(data)

 

4. loads载入字符串,恢复python对象

data = cPickle.loads(data_string)

 

 

pickle与cpickle比较

pickle完全用python来实现的,cpickle用C来实现的,cpickle的速度要比pickle快好多倍

 

pickle模块:

1. pickle.dump(obj, file, [,protocol])

  • 含义:pickle.dump(对象,文件,[使用协议])
  • 将要持久化的数据“对象”,保存到“文件”中,使用有3种协议,索引0为ASCII,1为旧式二进制,2为新式二进制协议,不同之处在于2要更高效一些。
  • 默认dump方法使用0做协议

2. pickle.load(file)

  • 含义:pickle.load(文件),将file中的对象序列化读出。
  • 从“文件”中读取字符串,将他们反序列化转换为python的数据对象,可以像操作数据类型的这些方法来操作它们;  

3. pickle.dumps(obj[, protocol])

  • 函数的功能:将obj对象序列化为string形式,而不是存入文件中。
  • obj:想要序列化的obj对象。
  • protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

4. pickle.loads(string)

  • 函数的功能:从string中读出序列化前的obj对象。
  • string:文件名称。

dump() 与 load() 相比 dumps() 和 loads() 还有另一种能力:dump()函数能一个接一个地将几个对象序列化存储到同一个文件中,随后调用load()来以同样的顺序反序列化读出这些对象。

 

实例:http://www.mamicode.com/info-detail-2079993.html

 

转载于:https://www.cnblogs.com/keye/p/8779626.html

相关文章:

  • SQL Server系列之 在发布复制模式下移动日志文件
  • MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
  • 控件焦点_转移
  • 第四次冲刺
  • 数据恢复软件如何换机使用?
  • C#格式化字符串,日期,时间,货币[转]
  • 共享充电宝也来跑马圈地 这只风口上的猪能飞的好吗
  • 阿里云移动数据分析服务使用教程
  • JavaScript教程网
  • WCF与ASP.NET Core性能比较
  • 小学徒成长系列—线程
  • PHP explode() 函数
  • (转载)Linux网络编程入门
  • 思维导图形式带你读完《大型网站技术架构》中
  • c# 泛型类型参数T的约束where
  • Google 是如何开发 Web 框架的
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • bearychat的java client
  • C++11: atomic 头文件
  • gf框架之分页模块(五) - 自定义分页
  • httpie使用详解
  • js面向对象
  • js算法-归并排序(merge_sort)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Shadow DOM 内部构造及如何构建独立组件
  • 安卓应用性能调试和优化经验分享
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 排序(1):冒泡排序
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 我是如何设计 Upload 上传组件的
  • 以太坊客户端Geth命令参数详解
  • 最简单的无缝轮播
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 安徽锐锋科技IDMS系统简介
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (0)Nginx 功能特性
  • (1)Nginx简介和安装教程
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一) springboot详细介绍
  • (转)visual stdio 书签功能介绍
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .naturalWidth 和naturalHeight属性,
  • .Net 8.0 新的变化
  • .NET 8.0 中有哪些新的变化?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 发展历程