在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间。Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作。

Pickle模块中最常用的函数为:

(1)pickle.dump(obj, file, [,protocol])

函数的功能:将obj对象序列化存入已经打开的file中。

参数讲解:

obj:想要序列化的obj对象。
file:文件名称。
protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
(2)pickle.load(file)

函数的功能:将file中的对象序列化读出。

参数讲解:

file:文件名称。
(3)pickle.dumps(obj[, protocol])

函数的功能:将obj对象序列化为string形式,而不是存入文件中。

参数讲解:

obj:想要序列化的obj对象。
protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
(4)pickle.loads(string)

函数的功能:从string中读出序列化前的obj对象。

参数讲解:

string:文件名称。
     【注】 dump() 与 load() 相比 dumps() 和 loads() 还有另一种能力:dump()函数能一个接着一个地将几个对象序列化存储到同一个文件中,随后调用load()来以同样的顺序反序列化读出这些对象。

【代码示例】

pickleExample.py

#coding:utf-8
__author__ = 'MsLili'
#pickle模块主要函数的应用举例
import pickle
dataList = [[1, 1, 'yes'],[1, 1, 'yes'],[1, 0, 'no'],[0, 1, 'no'],[0, 1, 'no']]
dataDic = { 0: [1, 2, 3, 4],1: ('a', 'b'),2: {'c':'yes','d':'no'}}#使用dump()将数据序列化到文件中
fw = open('dataFile.txt','wb')
# Pickle the list using the highest protocol available.
pickle.dump(dataList, fw, -1)
# Pickle dictionary using protocol 0.
pickle.dump(dataDic, fw)
fw.close()#使用load()将数据从文件中序列化读出
fr = open('dataFile.txt','rb')
data1 = pickle.load(fr)
print(data1)
data2 = pickle.load(fr)
print(data2)
fr.close()#使用dumps()和loads()举例
p = pickle.dumps(dataList)
print( pickle.loads(p) )
p = pickle.dumps(dataDic)
print( pickle.loads(p) )

结果为:

个人实例测试

import picklewhite_domain_file = "top_domains1.pkl"
new_white_domain_file = "top_domains_new.pkl"with open(white_domain_file, 'rb') as f:new_white_set = pickle.load(f)
print(len(new_white_set))new_domains = ["laiqukankan.com","netease.com","321fenx.com","haowu.link","zhuanzfx.com","yqkk.link"
]for new_domain in new_domains:new_white_set.add(new_domain)with open(new_white_domain_file, "wb") as f:pickle.dump(new_white_set, f)with open(new_white_domain_file, 'rb') as f:new_white = pickle.load(f)
print(len(new_white), type(new_white))

Python数据存储:pickle模块的使用讲解(测试代码)相关推荐

  1. Python--数据存储:pickle模块的使用讲解

    在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...

  2. 以下用于数据存储领域的python第三方库是-Python数据存储及表示

    [http://naotu.baidu.com/file/15cbc506e3da5e640a40659058d5be24?token=873f2ab3461d8f9a](http://naotu.b ...

  3. python存储-Python数据存储之 h5py详解

    1.Python数据存储(压缩) (1)numpy.save , numpy.savez , scipy.io.savemat numpy和scipy内建的数据存储方式. (2)cPickle + g ...

  4. 【pickle】详解python中的pickle模块(常用函数、示例)

    1.序列化.反序列化介绍 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 2.pickle模块说明 python中的pickle模块实现 ...

  5. Python 数据存储读取,6千字搞定各种方法

    作者 | 老表 来源 | 简说Python 一.前言 二.专栏概要 三.做准备:将爬取到的数据存入csv和mysql.其他数据库 3.1 前情回顾 3.1 数据存入+读取csv 3.2 数据存入+读取 ...

  6. 跟李宁老师学Python视频课程(14):Python数据存储-李宁-专题视频课程

    跟李宁老师学Python视频课程(14):Python数据存储-109人已学习 课程介绍         本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手 ...

  7. python分割数字_对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...

  8. Python 数据增强 -- PIL模块

    Python 数据增强 – PIL模块 一.导入模块.读取图片 # 图像操作模块 from PIL import Image# 图像颜色增强模块 from PIL import ImageEnhanc ...

  9. Python数据提取-lxml模块

    更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...

最新文章

  1. Laravel自定义分页样式
  2. VTK:Points之ExtractClusters
  3. java重排序_Java内存模型FAQ(四)重排序意味着什么?
  4. 视觉slam十四讲 pdf_视觉SLAM十四讲|第12讲 回环检测
  5. 【scala初学】scala IDE eclipse
  6. oracle操作之传输表空间
  7. Open Inventor:Windows下编译安装Coin3D
  8. 微软快捷键截图_如何在Microsoft Office的屏幕提示中显示快捷键
  9. R语言 生存分析与cox模型的学习笔记
  10. 微调StyleGAN2模型(使用Google Colab)
  11. python3多线程爬取微博配图相册,可自动获取session【简单,快速】
  12. 创业者妻子发声力挺老公:合伙创业七年未分股份被踢出局
  13. 【已解决】Spring容器中找不到ServletWebServerFactory类出现的异常
  14. TCP、UDP的区别
  15. 字符串切割函数strtok、strtok_s、strtok_r的区别
  16. vsm java_vsm向量空间模型java实现(源码)
  17. 企业薪酬管理的“七大通病”
  18. 计算机软考证书领取地点以及时间
  19. 学习方法学习方法学习方法
  20. [遁去的一推荐]软件测试认识的几个误区(中国软件测试社区提供)

热门文章

  1. Omni Recover for Mac版 - 一站式iPhone数据恢复
  2. python中正确的输入语句_python中,输入简单的非法语句为什么显示不一致呢
  3. frame中src怎么设置成一个变量_在 Figma 中如何选择 group(组)或 frame(画框)?...
  4. STM32+CubeMX开发工程笔记汇总(更新2021.8.12)
  5. ESP32 + ESP-IDF |GPIO 03 - 定时器轮询按钮的状态,控制LED亮或者灭
  6. 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...
  7. mysql修改表的备注信息_修改mysql 数据库的 表的列的备注信息
  8. Qt文档阅读笔记-void QObject::deleteLater()解析
  9. CMake笔记-使用CMake GUI生成MinGW的Makefiles及编译hiredis
  10. Web前端笔记-two.js加载图片