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

序列化和反序列化

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

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

序列化后的文件是在不同程序或者说不同语言之间传递数据的关键方法之一,可以将内容标准化为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.rhkb.cn/news/391026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享5款.NET开源免费的Redis客户端组件库

前言 今天大姚给大家分享5款.NET开源、免费的Redis客户端组件库,希望可以帮助到有需要的同学。 StackExchange.Redis StackExchange.Redis是一个基于.NET的高性能Redis客户端,提供了完整的Redis数据库功能支持,并且具有多节点支持、异步编…

[Git][分支管理][上]详细讲解

目录 1.理解分支2.创建分支3.切换分支4.合并分支5.删除分支 1.理解分支 感性理解:分支可以理解为平行宇宙,但是在用户需要的时候,可以将两个平行宇宙合并,此时两个平行宇宙的效果将会"叠加"理性理解:每次提…

TCP 和 UDP 之间的区别?

从 连接,可靠性,传输方式等方面: TCP 是面向连接的协议,在发送数据的时候需要先通过 TCP 的三次握手,而 UDP 是无连接的协议,可以直接传输数据TCP 通过超时重传,流量控制和拥塞控制等方法保障了…

使用JWT的SpringSecurity实现前后端分离

1. SpringSecurity完成前后端完全分离 分析: 前后端分离:响应的数据必须为JSON数据,之前响应的是网页 需要修改的代码有: 登录成功需要返回json数据登录失败需要返回json数据权限不足时返回json数据未登录访问资源返回json数据 1.…

二叉树的前序遍历 - 力扣(LeetCode)C语言

144. 二叉树的前序遍历 - 力扣(LeetCode)(点击前面链接即可查看题目) 一、题目 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3]示例 2: …

文心智能体【MBTI速测小精灵】:趣味速测,精准解析你的性格密码!

文章目录 一、文心智能体平台是什么?二、创建文心智能体智能体创建智能体调试分析智能体基础配置智能体高级配置智能体高级调试 三、文心智能体发布四、文心智能体体验总结 一、文心智能体平台是什么? AgentBuilder文心智能体平台是基于文心大模型的智能…

适用于 Android 的 6 大视频恢复软件榜单 – 恢复您的珍贵回忆!

失去珍贵的回忆可能是一种令人心碎的经历,尤其是在您的 Android 设备上拍摄视频时。无论是由于意外删除、格式化、系统崩溃还是任何其他不可预见的情况,丢失珍贵视频的想法都会造成巨大的痛苦。但不要担心!在这篇博文中,我们将深入…

临床随机对照试验中的分层问题及其解决方法

在临床随机对照试验(Randomized Controlled Trials, RCTs)中,分层问题(Stratification Issues)是影响研究结果有效性的重要因素之一。RCTs是评估医疗干预效果的金标准,旨在通过随机分组和对照来消除干扰因素…

在亚马逊云科技AWS上利用ElasticSearch和RAG搭建个性化推荐系统

简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍用当下热门的RAG和大语言模型&#xf…

[WUSTCTF2020]朴实无华1

打开题目 扫目录用dirsearch扫,为节省建议只扫常见的目录,配置是: ./dirsearch.py -e bak,zip,txt,tgz,php -u http:..... -s 3 -t 20 访问一下 根据提示,再访问一次 提示不在这,抓包看看 根据提示,改ge…

页面根据sse返回的流,逐句展示内容,达到gpt效果

之前的文章里,我写到了关于怎么获取sse中的流,但是缺少逐句展示的效果,这次来补齐。 比如这种,实现难点在于,当返回的markdown语法,不是完整的语句时,展示的代码块会错乱。 实现代码 app.vue …

P10477 题解

题目传送门 题目传送门(洛谷) Step1 理解题意 一共有 T T T 组数据有一个地铁,有一个中心车站(即为根),有一个人从中心车站出发。对于每组数据,给定两个同样长度的01串 s 1 s_1 s1​ , s …

内网安全:多种横向移动方式

1.MMC20.Application远程执行命令 2.ShellWindows远程执行命令 3.ShellBrowserWindow远程执行命令 4.WinRM远程执行命令横向移动 5.使用系统漏洞ms17010横向移动 DCOM: DCOM(分布式组件对象模型)是微软的一系列概念和程序接口。它支持不同…

C语言--函数

1. 函数定义 语法: 类型标识符 函数名(形式参数) {函数体代码 } (1)类型标识符 --- 数据类型(函数要带出的结果的类型) 注:数组类型不能做函数返回结果的类型,如果函…

Tomcat 8.5 下载、安装、启动及各种问题

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 本期内容主要介绍 Tomcat 8 的安装,以及可能会遇到的问题 文章目录 1. Tomcat 安装2. 可能会遇到的问题2.…

【vluhub】skywalking

SkyWalking是一个开源监控平台,用于从服务和云原生基础设施收集、分析、聚合和可视化数据 低版本存在sql注入漏洞 访问地址 http://192.168.203.12:8080/graphql burpsuite抓数据包 替换 {"query":"query queryLogs($condition: LogQueryConditi…

机器学习 第9章-聚类

机器学习 第9章-聚类 9.1 聚类任务 在“无监督学习”(unsupervised learning)中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,为进一步的数据分析提供基础。此类学习任务中研究最多、应用最广…

计算机毕业设计选题推荐-学生作业管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

errno错误码列举

errno&#xff0c;int变量&#xff0c;表示系统最近一次错误码。 当系统调用和一些库函数发生错误时&#xff0c;会给errno赋值&#xff0c;以指示哪里出了问题。 目录 errno值列表 errno值获取示例 errno值列表 <errno.h>头文件定义了errno的一些值&#xff0c;部分…

【C++ STL】list

文章目录 list1. list的使用1.1 增删查改1.2 功能接口 2. list的模拟实现2.1 list的定义2.2 默认成员函数2.3 迭代器正向迭代器解引用箭头 反向迭代器迭代器接口 2.4 基本功能 3. list对比vector list 与 vector 相比&#xff0c;list 的好处就是每次插⼊或删除 ⼀个 元素 就 …