Python数据存储:pickle模块的使用讲解(测试代码)
在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间。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模块的使用讲解(测试代码)相关推荐
- Python--数据存储:pickle模块的使用讲解
在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间.Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象 ...
- 以下用于数据存储领域的python第三方库是-Python数据存储及表示
[http://naotu.baidu.com/file/15cbc506e3da5e640a40659058d5be24?token=873f2ab3461d8f9a](http://naotu.b ...
- python存储-Python数据存储之 h5py详解
1.Python数据存储(压缩) (1)numpy.save , numpy.savez , scipy.io.savemat numpy和scipy内建的数据存储方式. (2)cPickle + g ...
- 【pickle】详解python中的pickle模块(常用函数、示例)
1.序列化.反序列化介绍 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 2.pickle模块说明 python中的pickle模块实现 ...
- Python 数据存储读取,6千字搞定各种方法
作者 | 老表 来源 | 简说Python 一.前言 二.专栏概要 三.做准备:将爬取到的数据存入csv和mysql.其他数据库 3.1 前情回顾 3.1 数据存入+读取csv 3.2 数据存入+读取 ...
- 跟李宁老师学Python视频课程(14):Python数据存储-李宁-专题视频课程
跟李宁老师学Python视频课程(14):Python数据存储-109人已学习 课程介绍 本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点.Python是当今炙手 ...
- python分割数字_对python数据切割归并算法的实例讲解
当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...
- Python 数据增强 -- PIL模块
Python 数据增强 – PIL模块 一.导入模块.读取图片 # 图像操作模块 from PIL import Image# 图像颜色增强模块 from PIL import ImageEnhanc ...
- Python数据提取-lxml模块
更多python教程请到友情连接: 菜鸟教程https://www.piaodoo.com 初中毕业读什么技校 http://cntkd.net 茂名一技http://www.enechn.com p ...
最新文章
- Laravel自定义分页样式
- VTK:Points之ExtractClusters
- java重排序_Java内存模型FAQ(四)重排序意味着什么?
- 视觉slam十四讲 pdf_视觉SLAM十四讲|第12讲 回环检测
- 【scala初学】scala IDE eclipse
- oracle操作之传输表空间
- Open Inventor:Windows下编译安装Coin3D
- 微软快捷键截图_如何在Microsoft Office的屏幕提示中显示快捷键
- R语言 生存分析与cox模型的学习笔记
- 微调StyleGAN2模型(使用Google Colab)
- python3多线程爬取微博配图相册,可自动获取session【简单,快速】
- 创业者妻子发声力挺老公:合伙创业七年未分股份被踢出局
- 【已解决】Spring容器中找不到ServletWebServerFactory类出现的异常
- TCP、UDP的区别
- 字符串切割函数strtok、strtok_s、strtok_r的区别
- vsm java_vsm向量空间模型java实现(源码)
- 企业薪酬管理的“七大通病”
- 计算机软考证书领取地点以及时间
- 学习方法学习方法学习方法
- [遁去的一推荐]软件测试认识的几个误区(中国软件测试社区提供)
热门文章
- Omni Recover for Mac版 - 一站式iPhone数据恢复
- python中正确的输入语句_python中,输入简单的非法语句为什么显示不一致呢
- frame中src怎么设置成一个变量_在 Figma 中如何选择 group(组)或 frame(画框)?...
- STM32+CubeMX开发工程笔记汇总(更新2021.8.12)
- ESP32 + ESP-IDF |GPIO 03 - 定时器轮询按钮的状态,控制LED亮或者灭
- 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...
- mysql修改表的备注信息_修改mysql 数据库的 表的列的备注信息
- Qt文档阅读笔记-void QObject::deleteLater()解析
- CMake笔记-使用CMake GUI生成MinGW的Makefiles及编译hiredis
- Web前端笔记-two.js加载图片