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列表去重的二种方法
Feb 14 Python
优化Python代码使其加快作用域内的查找
Mar 30 Python
简单介绍Python中的RSS处理
Apr 13 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Django中cookie的基本使用方法示例
Feb 03 Python
Python自定义函数计算给定日期是该年第几天的方法示例
May 30 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
Python socket 套接字实现通信详解
Aug 27 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
如何使用Python自动生成报表并以邮件发送
Oct 15 Python
Python Selenium库的基本使用教程
Jan 04 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
PHP 获取文件权限函数介绍
2013/07/11 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JS鼠标拖拽实例分析
2015/11/23 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
python数组过滤实现方法
2015/07/27 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
HR喜欢的自荐信格式
2013/10/08 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
国培远程培训感言
2014/03/08 职场文书
元旦活动感言
2014/03/08 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
房产遗嘱范本
2015/08/06 职场文书
护理培训心得体会
2016/01/22 职场文书