python pickle存储、读取大数据量列表、字典数据的方法


Posted in Python onJuly 07, 2019

先给大家介绍下python pickle存储、读取大数据量列表、字典的数据

针对于数据量比较大的列表、字典,可以采用将其加工为数据包来调用,减小文件大小

#列表
  #存储
  list1 = [123,'xiaopingguo',54,[90,78]]
  list_file = open('list1.pickle','wb')
  pickle.dump(list1,list_file)
  list_file.close()
 
  #读取
  list_file = open('list1.pickle','rb')
  list2 = pickle.load(list_file)
  print(list2)
 
#字典
  #存储
  list3 = {'12': 123, '23': 'xiaopingguo', '34': 54, '45': [90, 78]}
  list3_file = open('list3.pickle', 'wb')
  pickle.dump(list3, list3_file)
  list3_file.close()
  # # 读取
  list3_file = open('list3.pickle', 'rb')
  list3 = pickle.load(list3_file)
  print(list3)

  print(list3['23']

ps:下面看下python 利用pickle存大数据

最近在处理一份数据,有一个巨大的、字典型的中间变量,由于今后会持久、高频地使用,因此我考虑将其保存成类似于matlab的.mat格式的数据,方便以后随时读取。

理所当然地会想到利用pickle来保存数据,因为这是在python环境下最常用也最简单的存储数据的方式。
python存储数据的方法有很多,最常用的做法就是利用pickle模块,当然还有其他做法,比如存成json、txt等格式。至于

pandas、h5等方式的另说哈~

pickle模块介绍

pickle模块实现了用于序列化和反序列化python对象结构的二进制协议。 序列化操作"pickling"是将python对象层次结构转换为字节流的过程,反序列化操作 "unpickling"则是将字节流转换回对象层次结构。

不得不提到的是,pickle是python所独有的,因此非python程序可能无法重构pickle对象。在工作中,我就遇到一个问题,就是我用sklearn训练得到的机器学习模型,用pickle保存下来后,工程方面的同事是没法用java调用这个模型的,一个临时的方法是有位同事读pickle源码,自己用java一步步反序列化回来,佩服佩服。

pickle使用技巧

对于最简单的代码,使用 dump() 和 load() 函数便足够了。

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

但如果你读过pickle的说明文档的话,会发现有个参数叫做protocol。参数protocol代表了序列化模式(pickle协议),在python2.X版本默认值为0,在python3.X本默认值为3。简而言之,不同的python版本对应着不同的最高协议,同时protocol值越大,代表了所用的协议版本越高。如图所示,

那么修改protocol会有什么影响呢?protocol值越大,dump的速度越快,并且支持的数据类型更多,保存下来的文件占用空间更小,同时也带来一些其他优化,例如在python3.4中,协议版本4新支持对非常大的数据进行序列化。因此可以的话,请选择最高协议版本作为protocol参数的值,即设protocol=pickle.HIGHEST_PROTOCOL即可。

那么,上面的那段代码可以改成:

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

可能,对于小数据,影响不会很大。

但当你需要对大数据进行序列化的时候,请记得pickle的这个技巧。

总结

以上所述是小编给大家介绍的python pickle存储、读取大数据量列表、字典的数据的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧

Python 相关文章推荐
Python中基础的socket编程实战攻略
Jun 01 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
Python分类测试代码实例汇总
Jul 23 Python
Python实现一个论文下载器的过程
Jan 18 Python
python保存字典和读取字典的实例代码
Jul 07 #Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 #Python
python 画二维、三维点之间的线段实现方法
Jul 07 #Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 #Python
选择Python写网络爬虫的优势和理由
Jul 07 #Python
python和c语言的主要区别总结
Jul 07 #Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 #Python
You might like
Syphon 使用方法
2021/03/03 冲泡冲煮
自己动手做一个SQL解释器
2006/10/09 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
提高jQuery性能的十个诀窍
2013/11/14 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
使用Python生成XML的方法实例
2017/03/21 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python实现验证码识别
2020/06/15 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
个人公开承诺书
2014/03/28 职场文书
共青团员自我评价范文
2014/09/14 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
质量负责人岗位职责
2015/02/15 职场文书