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类的专用方法实例分析
Jan 09 Python
python实现从网络下载文件并获得文件大小及类型的方法
Apr 28 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
梅尔倒谱系数(MFCC)实现
Jun 19 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
Jun 27 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
Python Selenium截图功能实现代码
Apr 26 Python
Python 中的 copy()和deepcopy()
Nov 07 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自定义函数截取汉字长度
2014/05/15 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
js实现点击生成随机div
2020/01/16 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
Python中pygal绘制雷达图代码分享
2017/12/07 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
django自带调试服务器的使用详解
2019/08/29 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
携程英文网站:Trip.com
2017/02/07 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
见习期自我鉴定
2014/01/31 职场文书
发展部经理职责规定
2014/02/22 职场文书
企业出纳岗位职责
2014/03/12 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
公司捐书倡议书
2015/04/27 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript