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自动化测试之连接几组测试包实例
Sep 28 Python
Python pickle模块用法实例
Apr 14 Python
简单理解Python中的装饰器
Jul 31 Python
python django事务transaction源码分析详解
Mar 17 Python
使用Python更换外网IP的方法
Jul 09 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 Python
python操作日志的封装方法(两种方法)
May 23 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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+MYSQL的文章管理系统(一)
2006/10/09 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
为你总结一些php系统类函数
2015/10/21 PHP
php处理带有中文URL的方法
2016/07/11 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
跟老齐学Python之做一个小游戏
2014/09/28 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
python中使用print输出中文的方法
2018/07/16 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
50岁生日感言
2014/01/23 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
死亡证明书样本说明
2014/10/18 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
2014年学校工作总结
2014/11/20 职场文书
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫