python数据持久存储:pickle模块的基本使用

2023-11-09

 

经常遇到在Python程序运行中得到了一些字符串列表字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。

这个时候Pickle模块就派上用场了,它可以将对象转换为一种可以传输或存储的格式。

 python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

一、Pickle对象串行化

Pickle模块将任意一个Python对象转换成一系统字节的这个操作过程叫做串行化对象。

二、Pickle与CPickle对比

前者是完全用Python来实现的模块,这个CPickle是用C来实现的,它的速度要比pickle快好多倍,一般建议如果电脑中只要有CPickle的话都应该使用它。

三、Pickle模块的dump()方法

在Pickle模块中有2个常用的函数方法,一个叫做dump(),另一个叫做load()

第三部分, pickle.dump()方法:

这个方法的语法是:pickle.dump(对象, 文件,[使用协议])

提示:将要持久化的数据“对象”,保存到“文件”中,使用有3种,索引0为ASCII,1是旧式2进制,2是新式2进制协议,不同之处在于后者更高效一些。
默认的话dump方法使用0做协议。

四、Pickle模块的load方法

load()方法的作用正好与上面的dump()方法相反,上面是序列化数据,这个方法作用是反序列化。

语法:pickle.load(文件)

提示:从“文件”中,读取字符串,将它们反序列化转换为Python的数据对象,可以正常像操作数据类型的这些方法来操作它们。

Python picle对象持久化模块演示

 

A Simple Code

#使用pickle模块将数据对象保存到文件

import pickle

data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()

 

#使用pickle模块从文件中重构python对象

import pprint, pickle

pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()

转载于:https://www.cnblogs.com/pannyvan/p/4439308.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python数据持久存储:pickle模块的基本使用 的相关文章

  • 散景图只会弹出一个空白窗口

    所以我最近一直在尝试学习散景 一切都很顺利 但突然间 每当我尝试制作散景图时 浏览器就会显示一个空白页面 我没有收到任何错误代码 只有空白页 这是我几天前成功用来创建绘图的程序 我什至尝试加载几周前制作的 html 绘图文件 该文件在同事计
  • 将 ical 附件的邮件消息的内容类型设置为“text/calendar; method=REQUEST”

    我正在尝试使用 App Engine 邮件 API 从 App Engine 发送 iCalendar 格式的 ics 文件 这在 GMail 中非常有效 但是 Outlook 无法识别该文件 我认为问题在于内容类型设置为 文本 日历 而不
  • 如何并排绘制具有相同 X 坐标的条形图(“闪避”)

    import matplotlib pyplot as plt gridnumber range 1 4 b1 plt bar gridnumber 0 2 0 3 0 1 width 0 4 label Bar 1 align cente
  • celery任务eta已关闭,使用rabbitmq

    我使用教程中的默认设置和在 ubuntu 上运行的rabbitmq 使 Celery 任务正常进行 当我毫不延迟地安排任务时 一切都很好 但是当我给他们一个预计时间时 他们会被安排在未来 就好像我的时钟在某个地方关闭了一样 下面是一些请求任
  • 需要根据数据框中的行号应用不同的公式

    我正在努力在数据框中找到某种移动平均值 该公式将根据正在计算的行数而变化 实际场景是我需要计算Z列 Edit 2 以下是我正在使用的实际数据 Date Open High Low Close 0 01 01 2018 1763 95 176
  • virtualenvwrapper 函数在 shell 脚本中不可用

    所以 我再一次制作了一个很棒的 python 程序 它让我的生活变得更加轻松 并节省了大量时间 当然 这涉及到一个 virtualenv 用mkvirtualenvvirtualenvwrapper 的功能 该项目有一个requiremen
  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • 使用ideone时如何传入命令行参数?

    我正在使用 ideone 在线解释器 http ideone com http ideone com 来测试一些 C 和 Python 程序 如何指定命令行参数而不是使用 STDIN 输入 看起来你不能 但是快速破解应该做的伎俩 stati
  • 是否可以在 IPython 控制台中显示 pandas 样式?

    是否可以显示熊猫风格 https pandas pydata org pandas docs stable user guide style html在 iPython 控制台中 Jupyter 笔记本中的以下代码 import panda
  • 如何在plotly(python)中的刻度标签和图形之间添加空格?

    如果我使用绘图创建水平条形图 则每个条形的标签都与图表相对应 我想在标签和图表之间添加一些空间 填充 边距 我怎样才能做到这一点 Example import plotly offline as py import plotly graph
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 无法使用Python请求会话模块登录网站

    我刚刚开始进行网络抓取 对于我的第一个项目 我尝试使用 requests Session 登录 artofproblemsolving com 并访问另一个用户的帐户 这是我的代码 import requests LOGIN URL htt
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • Asyncio:从未检索到任务异常的怪异

    假设我有一个简单的代码 import asyncio async def exc print 1 0 loop asyncio get event loop loop create task exc try loop run forever
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 关闭正在运行代码的 IPython Notebook

    怎么运行的 我在 IPython Notebook 中运行了一些代码 一些迭代工作 我不小心关闭了正在运行的笔记本的浏览器 但回到 IPython 仪表板 我发现这个特定的笔记本尚未关闭 所以如果我再次打开笔记本 我会在它正在执行的代码前面

随机推荐

  • TiKV源码分析(一)RaftKV层

    关于TiDB与TiKV学习总结 本章序 关于RaftStore层 从RaftBatchSystem开始 状态机做了什么 mailbox注册与tx rx通道设置 消息收发与处理 Peer中的具体操作 Apply中的具体操作 一些琐碎信息 本章
  • 数据结构-栈的顺序存储结构(C++实现)

    目录 1 声明栈的结构体 2 初始化栈顶 3 添加元素至栈顶 4 删除栈顶元素 5 显示栈 整段代码 1 声明栈的结构体 结构体内声明一个data用来存放栈数据 top用来指向栈顶 typedef int ElemType typedef
  • 关于SOC、态势感知,5种常见的关联分析模型

    引言 在很多安全分析类产品建设的过程中都会涉及到关联分析 比如日志分析 soc 态势感知 风控等产品 关联分析可以认为是这类产品中最核心的能力之一 这个东西从名字上看就知道 千人千面 每个人的想法和理解都不一样 很多甲方都会提关联分析 但你
  • vue 路由切换动画(滑入,滑出效果)

    最近做的一个小项目 需要做路由切换 页面滑入滑出的效果 总结下实现的思路和方法 router view 用 transition 标签包裹 router view 组件 动态添加动画名 data 里定义transitionName变量
  • 四种访问修饰符

    Java中修饰符分为两种 访问修饰符和非访问修饰符 修饰符中 有一些修饰符可以既可以修饰类 也可以修饰方法 但是有一些修饰符只能修饰符方法 今天这篇文章先介绍一下四种访问修饰符 1 private修饰符 private表示私有的 既然是私有
  • C++ 大话设计之《简单工厂模式》(优缺点,设计原理,常用场景)

    简单工厂是一种创建型模式 优点 简单工厂模式能够提高生产效率和生产力 缺点 简单工厂模式将所有产品的创建逻辑集中在一个工厂类中 一旦这个工厂类出现问题 整个系统都会受到影响 如果要添加新的产品类 需要修改工厂类的代码 违反了开闭原则 对扩展
  • 史上最全的2023年最新版Android面试题集锦(含答案解析)

    前言 又到了一年的金三银四黄金求职季 虽说今年以来 经济回暖 但行业岗位缺口紧缩的趋势恢复还需一段时间 尤其对于Android开发而言 想要跳槽到一个高薪岗位更是难上加难 因此 想要杀出重围 必然要有万全的准备 除了一份美观的简历 还必须刷
  • 这梦想笑开了花---Day15

    题记 散尽这满腔的爱和忧伤 任这一往无前的气势澎湃 我在这 要走下去 转正快要一个月了 来这博客也有半个月了 算是在这个行业入了门 每天的忙碌略感疲惫 但这白天公司里编写后台的代码 晚上回家自己钻研着前端的开发 倒也乐此不疲的享受着 有朋友
  • C++STL之list容器

    一 list特性 list为带哨兵位双向循环链表 支持任意位置的插入和删除 与 array vector deque 相比 list的移除元素效率更高 最大缺陷是不支持 重载 不支持随机访问 只能通过迭代器进行线性开销的迭代 二 list的
  • 创建窗口

    工作涉及到了opengl的boom的demo 看到了learn opengl中有 所以 从头学起 顺便记录下 链接https learnopengl cn readthedocs io zh latest 01 20Getting 20st
  • GAN,IGBT, MOSFET

    作者 集微网 校对 团团 集微网 爱集微APP 各大主流应用商店均可下载 集微网消息 功率半导体是电子电力装置电能转换与电路控制的核心器件 根据Yole数据 中国已经成为全球最大的功率半导体消费市场 预计至2021年 全球功率器件市场规模将
  • Substance designer 瓦片贴图制作

    瓦片贴图制作 因为最终在unity应用 所以采用BaseColor Metallic Roughness Normal Height贴图的工作流程 对于瓦片的细节上 可以分为 基色 上下两种 污渍 水渍 苔藓 裂痕 如果你研究Substan
  • 使用ffmpeg获取一帧摄像头数据

    最近在研究FFmpeg 比较惊讶的是网上一大堆资料都是在说如何从已有的视频中截取一帧图像 却很少说到如何直接从摄像头中捕获一帧图像 其实我一直有个疑问 就是在Linux下 大家是用什么库来采集摄像头的 opencv 还是自己写v4l2的代码
  • HDOJ1052

    先用最快马比 不行再用最慢马比 都不行 就送最慢马给忘得最快马 include
  • git提交本地仓库至远端

    文章目录 1 创建完项目结构 没有分支 2 在github上新建远程仓库 3 按照上图中红色框中的命令 就可以提交本地 4 提交过程中可能会遇到全局配置文件config 中没有配置用户和邮箱地址的情况 5 git pull push每次都需
  • CSS布局—— float布局和flex布局

    用什么CSS布局 当需要兼容IE9时 使用float布局 当需要兼容IE9且不需要兼容最新浏览器时 使用flex布局 当不需要兼容IE9 需要兼容最新浏览器时 使用grid布局 float布局 父元素 添加clearfix类 清楚浮动bug
  • c++生成uuid

    不引用uuid h生成uuid方式 转自How can I generate UUID in c without using boost library Stack Overflow include
  • vue 时间插件_基于 Vue+Gantt 构建甘特图组件

    昨天给大家推荐了一款H5甘特图插件dhtmlxGantt 今天给大家分享如何在Vue项目中实现甘特图插件 基于dhtmlx gantt插件来实现在vue js项目中创建甘特图 安装依赖 首先需要安装 dhtmlx gantt 模块 npm
  • 对于任何一颗二叉树,若其终端节点数为n0,度为2的结点数为n2,则n0=n2+1

    对于任何一颗二叉树 若其终端节点数为n0 度为2的结点数为n2 则n0 n2 1 设度为0的结点数为n0 度为1的结点数为n1 度为2的结点数为n2 边数为T 第一种方案 由一个节点开始构建二叉树 观察图片 初始状态为n0 1 n1 0 n
  • python数据持久存储:pickle模块的基本使用

    经常遇到在Python程序运行中得到了一些字符串 列表 字典等数据 想要长久的保存下来 方便以后使用 而不是简单的放入内存中关机断电就丢失数据 这个时候Pickle模块就派上用场了 它可以将对象转换为一种可以传输或存储的格式 python的