博客
关于我
python 序列化操作
阅读量:796 次
发布时间:2023-03-07

本文共 924 字,大约阅读时间需要 3 分钟。

程序运行时,所有的变量都是在内存中的。例如,在程序中创建一个dict对象,存储页面的链接、标题和摘要等信息。代码如下:

d = dict(url='index.html', title='首页', content='首页')

在爬取过程中,页面链接会不断更新,比如将url改为secone.html。然而,当程序结束或中断时,内存中的变量会被操作系统回收。如果没有将修改后的url存储起来,下次运行程序时,url会重新初始化为index.html,导致程序从首页开始。因此,保存内存中的变量是必要的,这就是序列化的概念。

序列化是将内存中的变量转换为可以存储或传输的格式。这样可以将序列化后的变量写入磁盘或通过网络传输到其他设备,实现程序状态的保存和共享。反序列化则是从序列化的文件或数据中恢复变量的内容。Python提供了cPicklepickle两个模块来实现序列化和反序列化,两者的功能相同,但cPickle由于是C语言实现的速度更快。在Python3中,cPickle已更名为pickle

使用pickle进行序列化,可以使用dumps方法将对象序列化为字符串,或者使用dump方法直接将序列化后的对象写入文件。例如:

import _pickle as pickled = dict(url='index.html', title='首页', content='首页')pickle.dumps(d)  # 返回序列化后的字节数据

使用dump方法可以将序列化后的对象直接写入文件:

import _pickle as pickled = dict(url='index.html', title='首页', content='首页')f = open('ceshi.txt', 'wb')pickle.dump(d, f)f.close()

反序列化使用loadsload方法。例如:

f = open('ceshi.txt', 'rb')d = pickle.load(f)f.close()

通过反序列化,存储为文件的dict对象可以重新恢复内容,但恢复后的变量与原变量没有直接关系,只是内容相同。以上是序列化操作的完整过程。

转载地址:http://cpofk.baihongyu.com/

你可能感兴趣的文章
python 列表转字典方法
查看>>
Python 列表(List)概述-ChatGPT4o作答
查看>>
Python网络爬虫基础进阶到实战教程
查看>>
Python 初学者需要知道的四条建议
查看>>
Python 判断字符串是否包含子字符串
查看>>
python 判断当前时间是否为零点
查看>>
python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
查看>>
python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
查看>>
python 利用pyttsx3文字转语音
查看>>
python 利用已有Ner模型进行数据清洗合并
查看>>
python 到大数据开发工程师_如何成为一个大数据开发工程师?
查看>>
python 加密解密(base64, AES)
查看>>
Python 包管理器和 Node.js
查看>>
Python 单词字母顺序不变且所有倒排
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>
Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
查看>>
Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
查看>>
python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
查看>>
python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
查看>>