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 基础学习第二弹 类属性和实例属性
Aug 27 Python
使用Python进行稳定可靠的文件操作详解
Dec 31 Python
Python中import机制详解
Nov 14 Python
设置python3为默认python的方法
Oct 31 Python
pycharm配置pyqt5-tools开发环境的方法步骤
Feb 11 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
在vscode中配置python环境过程解析
Sep 28 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
python:目标检测模型预测准确度计算方式(基于IoU)
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
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
Python修改Excel数据的实例代码
2013/11/01 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
自荐信包含哪些内容
2013/10/30 职场文书
公积金单位接收函
2014/01/11 职场文书
体育教师求职信
2014/05/24 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
2014年司机工作总结
2014/11/21 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
2015毕业设计工作总结
2015/07/24 职场文书