2.4.1 Python存储之pickle

2024-06-07 19:32
文章标签 python 2.4 存储 pickle

本文主要是介绍2.4.1 Python存储之pickle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pickle是标准库中的一个模块,还有跟它完全一样的叫作 cpickle,两者的区别就是后者更快,所以,在操作中,不管是用import pickle,还是用import cpickle as pickle,在功能上都是一样的。
>>> import pickle
>>> a = [1,2,3,4,5]
>>> f = open("D://test.txt","wb")
>>> pickle . dump (a,f) #文件中以ascii格式保存数据
>>> f.close()
用pickle.dump(a,f)将数据integers保存到文件D://test.txt中。打开文件会发现都是编码,这个步骤可以称之为将 对象序列化
用到的方法是: pickle.dump(obj,file,protocol)
obj:序列化对象,在上面的例子中是一个列表,它是基本类型,也可以序列化自己定义的类型。
file:要写入的文件。可以更广泛地理解为拥有write()方法的对象,并且能接受字符串为参数,所以,它还可以是一个StringIO对象,或者其他自定义满足条件的对象。
protocol:可选项。默认为False(或者说0),以ASCII格式保存对象;如果设置为1或者True,则以压缩的二进制格式保存对象。
换一种数据格式,来对比一下:
>>> f = open("D://test1.txt","wb")
>>> pickle.dump (a,f, True ) #文件中以二进制格式保存数据
>>> f.close()
>>> import os
>>> s1 = os.stat("D://test.txt").st_size #计算两个文件的大小
>>> s2 = os.stat("D://test1.txt").st_size
>>> print "s1= %d ,s2= %d "%(s1,s2)
s1= 26 ,s2= 16
发现,以二进制方式保存的文件比以ASCII格式保存的文件小很多,所以,在序列化的时候,特别是面对较大对象时,建议将dump()的参数True设置上
存储文件叫序列化,读取文件就叫反序列化:
>>> f = open("D://test.txt","rb")
>>> a = pickle.load (f) #反序列化,读取文件
>>> print a
[1, 2, 3, 4, 5]
再试试读取二进制存储的文件:
>>> f = open("D://test1.txt","rb")
>>> a = pickle.load (f) #读取
>>> print a
[1, 2, 3, 4, 5]
>>> f.close()
下面试试自定义数据类型:
>>> import cPickle as pickle #和pickle一样,但cPickle更快
>>> import StringIO #跟file功能类似,只不过是在内存中操作“文件”
>>> class Person(object):
def __init__(self,name):
self.name = name
def getName(self):
print "My name is ",self.name

>>> pName = Person("zhangsan")
>>> pName.getName()
My name is zhangsan
>>> f = StringIO.StringIO () #和file的open功能一样,这是直接再内存中操作
>>> pickle.dump (pName,f,True) #序列化存储
>>> f.seek(0) #找到对应类型
>>> pName1 = pickle.load (f) #读取
>>> pName1.getName()
My name is zhangsan
>>> f.close()

这篇关于2.4.1 Python存储之pickle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040091

相关文章

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho