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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
python获取文件扩展名的方法
Jul 06 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
基于Python List的赋值方法
Jun 23 Python
django框架自定义用户表操作示例
Aug 07 Python
python+flask实现API的方法
Nov 21 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
python实现车牌识别的示例代码
Aug 05 Python
Python中调用其他程序的方式详解
Aug 06 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
python 创建一维的0向量实例
Dec 02 Python
Python生成器next方法和send方法区别详解
May 30 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
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
PHP7内核之Reference详解
2019/03/14 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python文件写入write()的操作
2019/05/14 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Python使用python-docx读写word文档
2019/08/26 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
化妆品活动策划方案
2014/05/23 职场文书
运动会标语
2014/06/21 职场文书
服务整改报告
2014/11/06 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
会议邀请函
2015/01/30 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
Java后台生成图片的完整步骤
2021/08/04 Java/Android
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers