python爬虫预备知识三-序列化和反序列化

news2024/11/13 10:50:08

序列化和反序列化

序列化是为了将内存中的数据保存在磁盘上或者用于传输,实现程序状态的保存和共享。反序列化反之。

序列化后的变量再被反序列化回来之后,两者之间已经没有任何关系。

序列化后的文件是在不同程序或者说不同语言之间传递数据的关键方法之一,可以将内容标准化为xml、json等格式,用于存储或者网络传输。

常用的序列化和反序列化方法:

python中常见序列化和反序列化模块cPickle和pickle。

python2中cPickle是用C语言编写的,效率较高,优先使用cpickle。但是python3中cPickle模块已经替换为_pickle模块。python3中引入使用import pickle即可,因为pickle模块已经经过重构和优化,建议在python3中使用pickle模块。

dumps方法:将任意对象序列化为一个str。然后可以将str写入文件中。

dump方法:将序列化对象直接写入文件中。

loads方法:把序列化后的文件读取的str反序列化为对象。

load方法:将文件直接反序列化为对象。

例子1:

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

print(serialized_d)
deserialized_d=pickle.loads(serialized_d)

print(deserialized_d)

例子2:

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

例子3:通过dump之间序列化为文件内容。

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

# 把百度首页序列化到test20240802.txt文本文件中
with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

serialized_d2 = pickle.dump(d,
open(r'd:\test\test20240802b.txt','wb'))

例子4:用loads方法或者load方法将序列化文件内容反序列化。

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

# 把百度首页序列化到test20240802.txt文本文件中
with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

serialized_d2 = pickle.dump(d,
open(r'd:\test\test20240802b.txt','wb'))
# loads方法将序列化后的文件内容读取为字符串,并且反序列化展示
with open(r'd:\test\test20240802.txt','rb') as file_reader:
    v_file_reader = pickle.loads(file_reader.read())
   
print(v_file_reader)
# load方法直接将文件内容反序列化
v_file_reader2 = pickle.load(open(r'd:\test\test20240802b.txt','rb'))
print(v_file_reader2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开发助手专业版,有反编译等多种功能

软件介绍 开发助手能够用来快速调试应用以及查看手机软硬件相关信息,包括:快速打开或关闭开发者选项中的选项。 将原来几十秒的操作缩短为一次点击。包括显示布局边界,显示 GPU 过度绘制。显示布局更新。强制 GPU 渲染 显示 GPU 视图更新&a…

第15课 Scratch少儿编程 入门篇:师生问候

师生问候 故事背景: 魔法学院的期末考核刚刚考完,魔法老师在教室里碰到小明,老师问小明考的怎么样? 程序原理: 找一个教室的背景,小精灵角色和魔法师的角色,将魔法师的角色造型左右反转&…

Java与Python谁更适合后端开发?

在软件开发的世界里,选择合适的编程语言就像为建筑选择合适的材料一样重要。 对于后端开发而言,Java和Python都是流行的选择,但它们各自拥有独特的优势和劣势,“谁更适合”就成为一个被议论的话题。 事实上,并不存在…

调用IP实现数据加速

前言 在数字系统设计中,提升数据处理速度和效率是关键目标。本实验着眼于利用双端口RAM和异步FIFO对IP核ROM中的数据进行加速处理,通过这两种硬件组件的有效结合来优化数据访问和传输。双端口RAM允许同时进行读写操作,提高数据处理的并行性和…

中央空调常用风口的分类

中央空调常用风口的分类中央空调常用的风口类型有七类,包括百叶风口、散流器、喷口、旋流风口、条缝风口、格栅风口和专用风口。详细分类如下: 1)百叶风口:单层百叶风口、双层百叶风口、连动百叶风口、固定斜百叶风口、地面固定斜…

How to tune agent _executor for better understanding of the database

题意:如何调整agent _executor以更好地理解数据库 问题背景: I have a database in which I have connected an agent too. However, I have noticed that it sometimes gets confused between whether or not it should return a column ID or persons…

5 mysql 查询语句

1.DML:对数据进行增删改查 提示:Execute执行 Execute and Suppress 执行并且抑制这个警告 person表的结构 /* DML:Data Manipulation Language 数据操作语言,对数据进行 增删改查操作,因为査询的操作太频繁和复杂,将查询的操作独立成为DQL */ use db1109;//person表在d…

智慧水务项目(二)django(drf)+angular 18 创建通用model,并对orm常用字段进行说明

一、说明 上一篇文章建立一个最简单的项目,现在我们建立一个公共模型,抽取公共字段,以便于后续模块继承,过程之中会对orm常用字段进行说明,用到的介绍一下 二、创建一个db.py 目录如下图 1、代码 from importlib im…

私域流量变迁与精细移动化趋势下的AI智能名片小程序源码应用探索

摘要:随着移动互联网技术的飞速发展,私域流量的价值日益凸显,成为企业营销战略的重要组成部分。私域流量的精细化和移动化趋势不仅改变了传统的营销格局,也为新兴技术的应用提供了广阔空间。本文深入探讨了私域流量的变迁历程&…

磁盘碎片整理工具IObit Smart Defrag PRO 绿色版

在数字化时代,电脑的性能直接影响到我们的工作效率和娱乐体验。随着使用时间的增长,硬盘上的文件碎片逐渐增多,导致电脑运行缓慢。今天,我为大家介绍一款强大的磁盘碎片整理工具——IObit Smart Defrag,它能有效解决这…

探索Python的聊天机器人世界:Errbot的魔力

文章目录 探索Python的聊天机器人世界:Errbot的魔力背景:为何选择Errbot?Errbot:Python中的聊天机器人框架安装Errbot:简单几步,即刻开始探索Errbot:五个简单函数的魔法1. 创建机器人2. 响应消息…

全球汽车用MEMS加速度计市场规划预测:未来六年CAGR为2.8%

随着汽车行业的持续发展和消费者对安全性能的需求增加,汽车用MEMS加速度计作为提升车辆安全性和稳定性的关键组件,正逐渐受到市场的广泛关注。本文旨在通过深度分析汽车用MEMS加速度计行业的各个维度,揭示行业发展趋势和潜在机会。 【市场趋…

ElementPlus 中el-select自定义指令实现触底加载请求options数据

1) 背景: 老项目翻新时,发现一个下拉框数据非常多,客户呢,希望全部数据一起展示,意思就是全部数据一起返回给前端用于展示。但这会造成明显的卡顿。~~明显的不合理! QAQ!~~ 于是压力给到前端,查询资料,各种…

论文阅读:Most Probable Densest Subgraphs

摘要 本文提出了一种在不确定图中发现最有可能稠密子图(MPDS)的新方法。不确定图中的每条边都有存在概率,使得计算稠密子图变得複杂。作者定义了稠密子图概率,并证明了计算该概率是#P难的。为了解决这个问题,设计了基…

算法通关:014_1:用栈实现队列

文章目录 题目总结代码运行结果 题目 用栈实现队列 leetcode :232 总结 时间复杂度 平均下来每个方式是O(1) 代码 class MyQueue {public Stack<Integer> in;public Stack<Integer> out;//初始化public MyQueue() {in new Stack<>();out new Stack<…

整体接口测试

文章目录 1.分类1.新增分类1.接口设计2.结果 2.更新分类1.接口设计2.结果 3.查询分类1.接口设计2.结果&#xff08;少了一个count字段暂时不改&#xff09; 4.查询大类下分类1.接口设计2.结果 5.删除分类1.接口设计2.结果 2.标签1.新增标签1.接口设计2.结果 2.更新标签1.接口设…

E5092A可配置的多端口测试仪

E5092A 可配置的多端口测试仪 多达 10 个端口的全交叉测量&#xff0c;或者最多 22 个端口的测量功能。 概述 E5092A 多端口测试仪可以灵活配置&#xff0c;并可与4 端口ENA 网络分析仪&#xff08;E5070B/E5071B/E5071C/E5080A&#xff09;结合使用&#xff0c;组成频率范…

信息安全管理中,文件销毁、硬盘销毁、数据销毁和物料销毁分别如何

文件销毁的方法主要有删除、覆盖、加密和物理破坏。硬盘销毁的方法主要有物理破坏、磁性破坏、化学破坏和高温破坏。数据销毁的方法主要有逻辑删除、物理破坏、磁性破坏和化学破坏。物料销毁的方法主要有回收利用、填埋处理、焚烧处理、生物降解和化学处理。 文件销毁的方法&a…

江协科技51单片机学习- p31 LCD1602液晶屏驱动

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Frida挂钩Java层代码与协议分析

Hook类中普通方法 在本文中&#xff0c;我们继续以某嘟牛应用为例&#xff0c;在用户点击登录按钮后&#xff0c;哪个方法会被调用。我们在上一篇文章中提到&#xff0c;搜索关键词 “Encrypt” 后&#xff0c;发现两个包含该字符串的 Java 方法。接下来&#xff0c;我们通过 …