网站设计师与网站开发工程师,全屏背景网站如何做到自适应,站长工具源码,wordpress dnsprefetch文章目录 序列化和反序列化JSON模块pickle模块进阶案例 序列化和反序列化
通过文件操作#xff0c;我们可以将字符串写入到一个本地文件。但是#xff0c;如果是一个对象(例如列表、字典、元组等)#xff0c;就无法直接写入到一个文件里#xff0c;需要对这个对象进行序列… 文章目录 序列化和反序列化JSON模块pickle模块进阶案例 序列化和反序列化
通过文件操作我们可以将字符串写入到一个本地文件。但是如果是一个对象(例如列表、字典、元组等)就无法直接写入到一个文件里需要对这个对象进行序列化然后才能写入到文件里。
设计一套协议按照某种规则把内存中的数据转换为字节序列保存到文件这就是序列化反之从文件的字节序列恢复到内存中就是反序列化。
Python中提供了JSON和pickle两个模块用来实现数据的序列化和反序列化。
JSON模块
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式它基于 ECMAScript 的一个子集采用完全独立于编程语言的文本格式来存储和表示数据。JSON的本质是字符串
使用JSON实现序列化 JSON提供了dump和dumps方法将一个对象进行序列化。
dumps方法的作用是把对象转换成为字符串它本身不具备将数据写入到文件的功能。
import json
file open(names.txt, w)
names [zhangsan, lisi, wangwu, jerry, henry, merry, chris]
# file.write(names) 出错不能直接将列表写入到文件里# 可以调用 json的dumps方法传入一个对象参数
result json.dumps(names)# dumps 方法得到的结果是一个字符串
print(type(result)) # class str# 可以将字符串写入到文件里
file.write(result)file.close()dump方法可以在将对象转换成为字符串的同时指定一个文件对象把转换后的字符串写入到这个文件里。
import jsonfile open(names.txt, w)
names [zhangsan, lisi, wangwu, jerry, henry, merry, chris]# dump方法可以接收一个文件参数在将对象转换成为字符串的同时写入到文件里
json.dump(names, file)
file.close()注意如果是一个空对象调用dumps方法转换成为一个JSON对象得到的结果是null(JS里的空对象)
json.dumps(None) # null使用JSON实现反序列化 使用loads和load方法可以将一个JSON字符串反序列化成为一个Python对象。
loads方法需要一个字符串参数用来将一个字符串加载成为Python对象。
import json# 调用loads方法传入一个字符串可以将这个字符串加载成为Python对象
result json.loads([zhangsan, lisi, wangwu, jerry, henry, merry, chris])
print(type(result)) # class listload方法可以传入一个文件对象用来将一个文件对象里的数据加载成为Python对象。
import json# 以可读方式打开一个文件
file open(names.txt, r)# 调用load方法将文件里的内容加载成为一个Python对象
result json.load(file)print(result)
file.close()pickle模块
和json模块类似pickle模块也有dump和dumps方法可以对数据进行序列化同时也有load和loads方法进行反序列化。区别在于json模块是将对象转换成为字符串而pickle模块是将对象转换成为二进制。
pickle模块里方法的使用和json里方法的使用大致相同需要注意的是pickle是将对象转换成为二进制所以如果想要把内容写入到文件里这个文件必须要以二进制的形式打开。
区别(了解) 思考: json和pickle两个模块都可以将对象进行序列化和反序列化那它们有哪些区别在使用场景上又该如何选择
json模块:
将对象转换成为字符串不管是在哪种操作系统哪种编程语言里字符串都是可识别的。
json就是用来在不同平台间传递数据的。
并不是所有的对象都可以直接转换成为一个字符串下标列出了Python对象与json字符串的对应关系。
PythonJSONdictobjectlist, tuplearraystrstringint, floatnumberTruetrueFalsefalseNonenull
如果是一个自定义对象默认无法装换成为json字符串需要手动指定JSONEncoder。
如果是将一个json串重新转换成为对象这个对象里的方法就无法使用了。
import jsonclass MyEncode(json.JSONEncoder):def default(self, o):# return {name:o.name,age:o.age}return o.__dict__class Person(object):def __init__(self, name, age):self.name nameself.age agedef eat(self):print(self.name正在吃东西)p1 Person(zhangsan, 18)# 自定义对象想要转换成为json字符串需要给这个自定义对象指定JSONEncoder
result json.dumps(p1, clsMyEncode)
print(result) # {name: zhangsan, age: 18}# 调用loads方法将对象加载成为一个对象以后得到的结果是一个字典
p json.loads(result)
print(type(p))pickle模块
pickle序列化是将对象按照一定的规则转换成为二进制保存它不能跨平台传递数据。 pickle的序列化会将对象的所有数据都保存。
进阶案例 【Python】Python 实现猜单词游戏——挑战你的智力和运气 【python】Python tkinter库实现重量单位转换器的GUI程序 【python】使用Selenium获取(2023博客之星)的参赛文章 【python】使用Selenium和Chrome WebDriver来获取 【腾讯云 Cloud Studio 实战训练营】中的文章信息 使用腾讯云 Cloud studio 实现调度百度AI实现文字识别 【玩转Python系列【小白必看】Python多线程爬虫下载表情包网站的图片 【玩转Python系列】【小白必看】使用Python爬取双色球历史数据并可视化分析 【玩转python系列】【小白必看】使用Python爬虫技术获取代理IP并保存到文件中 【小白必看】Python图片合成示例之使用PIL库实现多张图片按行列合成 【小白必看】Python爬虫实战之批量下载女神图片并保存到本地 【小白必看】Python词云生成器详细解析及代码实现 【小白必看】Python爬取NBA球员数据示例 【小白必看】使用Python爬取喜马拉雅音频并保存的示例代码 【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现 【小白必看】Python爬虫数据处理与可视化 【小白必看】轻松获取王者荣耀英雄皮肤图片的Python爬虫程序 【小白必看】利用Python生成个性化名单Word文档 【小白必看】Python爬虫实战获取阴阳师网站图片并自动保存 小白必看系列之图书管理系统-登录和注册功能示例代码 小白实战100案例: 完整简单的双色球彩票中奖判断程序适合小白入门 使用 geopandas 和 shapely(.shp) 进行地理空间数据处理和可视化 使用selenium爬取猫眼电影榜单数据 图像增强算法Retinex原理与实现详解 爬虫入门指南(8): 编写天气数据爬虫程序实现可视化分析 爬虫入门指南(7):使用Selenium和BeautifulSoup爬取豆瓣电影Top250实例讲解【爬虫小白必看】 爬虫入门指南(6):反爬虫与高级技巧IP代理、User-Agent伪装、Cookie绕过登录验证及验证码识别工具 爬虫入门指南(5): 分布式爬虫与并发控制 【提高爬取效率与请求合理性控制的实现方法】 爬虫入门指南(4): 使用Selenium和API爬取动态网页的最佳方法 爬虫入门指南(3)Python网络请求及常见反爬虫策略应对方法 爬虫入门指南(2)如何使用正则表达式进行数据提取和处理 爬虫入门指南(1)学习爬虫的基础知识和技巧 深度学习模型在图像识别中的应用CIFAR-10数据集实践与准确率分析 Python面向对象编程基础知识和示例代码 MySQL 数据库操作指南学习如何使用 Python 进行增删改查操作 Python文件操作指南编码、读取、写入和异常处理 使用Python和Selenium自动化爬取 #【端午特别征文】 探索技术极致未来因你出“粽” # 的投稿文章 Python多线程与多进程教程全面解析、代码案例与优化技巧 Selenium自动化工具集 - 完整指南和使用教程 Python网络爬虫基础进阶到实战教程 Python入门教程掌握for循环、while循环、字符串操作、文件读写与异常处理等基础知识 Pandas数据处理与分析教程从基础到实战 Python 中常用的数据类型及相关操作详解 【2023年最新】提高分类模型指标的六大方案详解 Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能 用4种回归方法绘制预测结果图表向量回归、随机森林回归、线性回归、K-最近邻回归