Python 常用模块pickle
Python 常用模块pickle
pickle序列化模块
【一】定义
- 序列化:将数据结构或对象转换为可存储或传输的格式
- 反序列化:将序列化后的数据恢复为开始的数据结构或者对象
【二】目的
- 数据持久化存储
- 远程通信
- 缓存
- 进程间通信
【三】序列化
- 将对象转换为字节流的过程称为序列化
pickle.dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None)pickle.dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None)obj:要序列化的对象file:一个文件对象,通常以二进制写入模式打开文件protocol:序列化的版本号,可以省略,默认(None)最高版本fix_imports:为True默认,尝试自动修复在不同Python版本之间可能的模块导入问题buffer_callback:一个可选的回调函数,用于控制内部缓冲区的分配。默认使用内部缓冲区管理
import pickleuser_dict = {"name": "bruce", "age": "18"}str_dict = pickle.dumps(user_dict)
print(str_dict)
print(type(str_dict))
# b'\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05bruce\x94\x8c\x03age\x94\x8c\x0218\x94u.'
# <class 'bytes'>
with open("a.pkl", "wb") as fp:pickle.dump(user_dict, fp)
# pickle.dump(user_dict, open("a.pkl", "wb"))
【四】反序列化
- 将字节流还原成对象的过程称为反序列化
pickle.loads(data, *, fix_imports=True, encoding="ASCII", errors="strict"buffers=None)pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict",buffers=None)data:要序列化的字节流内容file:一个文件对象,通常以二进制读取模式打开文件fix_imports:为True默认,尝试自动修复在不同Python版本之间可能的模块导入问题encoding:字符串编码格式errors:解码错误的处理方式,与str.decode()方法中的参数相同。默认strict,即抛出UnicodeDecodeErrorbuffers:一个可选的PickleBuffer对象,用于提供自定义缓冲区的支持,默认None
import picklewith open("a.pkl", "rb") as fp:read_dict = pickle.load(fp)
# read_dict = pickle.load(open("a.pkl", "rb"))
print(read_dict)
print(type(read_dict))
# {'name': 'bruce', 'age': '18'}
# <class 'dict'>
【五】通用性
-
pickle模块适用于大多数Python对象,包括自定义类的实例、内置数据类型等。 -
不适用于某些特殊对象,比如文件句柄、数据库连接等。
-
josn序列化以后java、js等语言可以识别 -
pickle序列化以后,其他语言都不能识别
【六】应用
【1】函数写入文件、从文件读取函数
import pickledef my_func():print("这是定制函数")pickle.dump(my_func, open("a.pkl", "wb"))
read_func = pickle.load(open("a.pkl", "rb"))
read_func() # 这是定制函数
【2】将实例写入文件、从文件读取实例
import pickleclass PeaShooter:def __init__(self, name, attack_val):self.name = nameself.attack_val = attack_valpickle.dump(PeaShooter, open("a.pkl", "wb"))
read_object = pickle.load(open("a.pkl", "rb"))
ice_shooter = read_object("寒冰射手", 20)pickle.dump(ice_shooter, open("a.pkl", "wb"))
read_instance = pickle.load(open("a.pkl", "rb"))
print(read_instance.__dict__)
# {'name': '寒冰射手', 'attack_val': 20}
相关文章:
Python 常用模块pickle
Python 常用模块pickle pickle序列化模块 【一】定义 序列化:将数据结构或对象转换为可存储或传输的格式反序列化:将序列化后的数据恢复为开始的数据结构或者对象 【二】目的 数据持久化存储远程通信缓存进程间通信 【三】序列化 将对象转换为字节…...
CentOS 6 制作openssh 9.6 p1 rpm包(含ssh-copy-id、openssl) —— 筑梦之路
openssh 9.6 需要openssl 1.1.1 以上版本,因此需要先安装openssl 1.1.1,可阅读这篇升级更新openssl版本到1.1.1w CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路-CSDN博客 CentOS 6很久都停止更新和支持,关于此版本的写的不多ÿ…...
Tomcat Notes: Deployment File
This is a personal study notes of Apache Tomcat. Below are main reference material. - YouTube Apache Tomcat Full Tutorial,owed by Alpha Brains Courses. https://www.youtube.com/watch?vrElJIPRw5iM&t801s 1、Tomcat deployment1.1、Two modes of …...
某邦通信股份有限公司IP网络对讲广播系统挖矿检测脚本
目录 1.漏洞概述 2.影响版本 3.危害等级 4.挖矿程序检测 5.Nuclei自动化检测...
uniapp点击跳转传对象
目录 传对象传对象传送组件接受组件 最后 传对象 传对象 传送组件 点击传给组件 <view class"dki-tit-edit" click"gotificatedit(item)">编辑 </view>gotificatedit(item){console.log(item,item);let options JSON.stringify(item);uni.…...
简单用PHP实现微信小程序的游戏功能
微信小程序的兴起,越来越多的开发者开始关注如何在小程序中实现游戏功能。PHP作为一种流行的后端语言,可以很好地与小程序进行搭配,实现游戏功能。下面将介绍如何使用PHP来实现微信小程序的游戏功能,并提供具体的代码示例。 建立…...
某查查请求头参数加密分析(含JS加密算法与Python爬虫源码)
文章目录 1. 写在前面2. 请求分析3. 断点分析4. 扣加密JS5. Python爬虫代码实现 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】ÿ…...
免费用chatGPT
免费用chatGPT,地址: DocGPT - 第二大脑...
还不会python 实现常用的数据编码和对称加密?看这篇文章就够啦~
相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式,如何使用 python 去实现。话不多说,接下来直接进入主题: 前言 1…...
简易实现 MyBatis 底层机制
MyBatis 大家好呀!我是小笙,我中间有1年没有更新文章了,主要忙于毕业和就业相关事情,接下来,我会恢复更新!我们一起努力吧! 概述 MyBatis 是一个持久层的框架(前身是 ibatis&#x…...
PhpPythonC++圆类的实现(OOP)
哎......被投诉了 😭😭😭😭😭 其实也不是小编不更,这不是期末了吗(zhaojiekou~~),而且最近学的信息收集和ctf感觉好像没找到啥能更的(不过最经还是在考虑更一…...
OpenSSL升级版本
1 查看openssl版本 $ openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 目前是1.0版本系列. 2 下载最新稳定版本的OpenSSL源码包 $ wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz 3 编译源码安装 tar -xzvf openssl-1.1.1q.tar.gz cd openssl-1.1.1q .…...
基于sprinmgboot实习管理系统源码和论文
随着信息化时代的到来,管理系统都趋向于智能化、系统化,实习管理也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而实习管理…...
图像分类任务的可视化脚本,生成类别json字典文件
1. 前言 之前的图像分类任务可视化,都是在train脚本里, 用torch中dataloader将图片和类别加载,然后利用matplotlib库进行可视化。 如这篇文章中:CNN 卷积神经网络对染色血液细胞分类(blood-cells) 在分类任务中,必定…...
Adding Conditional Control to Text-to-Image Diffusion Models——【代码复现】
官方实现代码地址:lllyasviel/ControlNet: Let us control diffusion models! (github.com) 一、前言 此项目的使用需要显存大于8G,训练自己的ControlNet或需要更大,因此请注意查看自身硬件是否符合。 在此之前请确保已经安装好python以及…...
java-Exchanger详解
1.概述 java.util.concurrent.Exchanger。这在Java中作为两个线程之间交换对象的公共点。 2.Exchanger简介 Exchanger类可用于在两个类型为T的线程之间共享对象。该类仅提供了一个重载的方法exchange(T t)。 当调用exchanger时,它会等待成对的另一个线程也调用它…...
‘再战千问:启程你的提升之旅‘,如何更好地提问?
例如,很多时候我们提出一些问题,然而通义千问提供的答案,并非完全符合我们的期望。这并非由于通义千问的智能程度不足,而是提问者的“提问技巧”尚未掌握得当。 难道提问还需要讲究艺术性吗?确实如此。今天,…...
java SSM社区文化服务管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点 java SSM社区文化服务管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…...
go执行静态二进制文件和执行动态库文件
目的和需求:部分go的核心文件不开源,例如验证,主程序核心逻辑等等 第一个想法,把子程序代码打包成静态文件,然后主程序执行 子程序 package mainimport ("fmt""github.com/gogf/gf/v2/os/gfile"…...
通过示例解释序列化和反序列化-Java
序列化和反序列化是Java(以及通常的编程)中涉及将对象转换为字节流,以及反之的过程。当你需要传输或存储对象的状态时特别有用,比如将其通过网络发送或持久化到文件中。 序列化: 定义:序列化是将对象的状…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
