pickle

pickle · 浏览次数 : 31

小编点评

**pickle 模块** `pickle` 模块是 Python 中一个标准模块,用于将对象转换为可传输或存储的格式。通过使用 `pickle` 模块,我们可以将 Python 中运行的对象信息保存到文件中,以便以后使用。 **序列化(serialization)** 序列化将 Python 对象转换为二进制数据流。二进制数据流可以存储在硬盘中,当需要读取文件的时候,可以从硬盘中读取数据并将其反序列化便可以得到原始的数据。 **反序列化(deserialization)** 反序列化从二进制数据流中创建对象。 **使用 pickle 模块** ```python import pickle # 将对象序列化到文件 with open("object.pkl", "wb") as f: pickle.dump(obj, f) # 从文件中加载对象 with open("object.pkl", "rb") as f: obj = pickle.load(f) ``` **优点** * 实现了基本的数据序列化和反序列化。 * 可以将对象保存到文件中,以便以后使用。 * 可以从文件中创建上一次程序保存的对象。 **注意** * `pickle` 模块保存的格式为 .pkl,不是人类可读的。 * `pickle` 模块只能用于保存 Python 对象。

正文

什么是pickle?

序列化和反序列化

  • 便于存储。序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据。python模块大全中的Pickle模块就派上用场了,它可以将对象转换为一种可以传输或存储的格式。
  • 便于传输。当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把這个对象转换为字节序列,在能在网络上传输;接收方则需要把字节序列在恢复为对象。

介绍

pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装。

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

在官方的介绍中,序列化操作的英文描述有好几个单词,如”serializing”, “pickling”, “serialization”, “marshalling” 或者”flattening”等,它们都代表的是序列化的意思。相应的,反序列化操作的英文单词也有好多个,如”de-serializing”, “unpickling”, “deserailization”等。为了避免混淆,一般用pickling/unpickling, 或者serialization/deserailization

pickle模块是以二进制的形式序列化后保存到文件中(保存文件的后缀为.pkl),不能直接打开进行预览。而python的另一个序列化标准模块json,则是human-readable的,可以直接打开查看(例如在notepad++中查看)。

如何学习

pickle模块有两类主要接口,即序列化和反序列化。

  • 序列化
pickle.dump()
Pickler(file, protocol).dump(obj)
  • 反序列化
pickle.loads()
Pickler(file, protocol).dump(obj)

例子

import pickle

a_buffer=pickle.dumps(2)
print(type(a_buffer),a_buffer)

a=pickle.loads(a_buffer)
print(type(a),a)

# 输出
<class 'bytes'> b'\x80\x04K\x02.'
<class 'int'> 2

参考

1、https://blog.csdn.net/chengyikang20/article/details/124396059

与pickle相似的内容:

pickle

## 什么是pickle? ### 序列化和反序列化 + 便于存储。序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,当需要读取文件的时候,从硬盘中读取数据,然后再将其反序列化便可以得到原始的数据。在Python程序运行中得到了一些字符串、列表、字典等数据,想要长久的保存下来,

第二届黄河流域网络安全技能挑战赛Web_wirteup

前言 好久没写过比赛的wp了,黄河流域的web出的不错,挺有意思了,花了点时间,也是成功的ak了 myfavorPython 注册登录,一个base64输入框,猜测pickle反序列化,简单测试下,返回的数据是pickletools.dis解析的opcode结构,猜测其实已经load了,但是没回显,

element-ui使用el-date-picker日期组件常见场景

开始 最近一直在使用 element-ui中的日期组件。 所以想对日期组件常用的做一个简单的总结; 1.处理日期组件选择的时候面板联动问题 2.限制时间范围 解除两个日期面板之间的联动 我们发现2个日期面板之间其实是有联动关系的; 开始时间面板和结束时间面板始终只能相邻; 不能出现开始时间选择3月,

salesforce零基础学习(一百二十六) Picklist Value Set 优缺点和使用探讨

本篇参考:https://help.salesforce.com/s/articleView?id=sf.fields_creating_global_picklists.htm&type=5 当我们创建Picklist 字段时,比如很多表很多字段都会用到同样的 picklist value时,我们

写了一个json小工具,希望大家体验(Mac平台)

用rust写了一个json小工具“JSON PICKER”,欢迎大家试用: https://github.com/davelet/json-picker/releases/tag/V0.2 动机是平常开发的时候,经常遇到大段json,里面的很多字段是不需要的。 我所在的项目组在接口对接上出现了rep