python中序列化之json文件的使用

100天精通Python丨黑科技篇 —— 21、大语言模型_100天精通python快速入门到黑科技 ChatGPT 是 OpenAI 推出的一种基于 GPT-3/4 的聊天机器人。chatgpt 的颠覆性影响主要体现在提高语言交流的便捷性、个性化服务、自动化客服和教育娱乐等方面,这些应用可以为用户带来更多的便利和乐趣,同时也为企业提供了更多的服务和商机。本文收录于,是由的硬核博主倾力打造,分基础知识篇和黑科技应用两大部分,欢迎订阅本专栏,订阅后可私聊进Python全栈VIP交流群(问题解答、互相帮助)还可领取20GPython视频和100本互联网行业电子书。 阅读详情

前言:

因为文件的读写只能进行字符串或比特类型的操作,其他类型只能转换为字符串或比特类型,想要使用时再转换回原来的类型,转换的过程非常复杂。而序列化和反序列化恰好可以很好的解决这个问题。

序列化和反序列化:

序列化就是将数据的信息或数据结构信息通过转换成字符串,以达到存储或传输的效果。

反序列化,顾名思义,就是将字符串转换为原来的类型。

可序列化的数据类型:

数字类型、字符串类型、列表类型、元组类型、字典类型【最常用】

注意:类、实例化对象,函数,集合是无法序列化的。【这点,java里类,实例化对象是可以序列化的啊?】

序列化模块--json模块与pickle模块:

json是通用的序列化模块,几乎所有的编程语言都有json模块,且序列化和反序列化的规则是统一的。因此,我们在python中通过json序列化的数据,在其他语言中都可以反序列化并使用。

json模块的函数

函数参数描述例子返回值
dumpsobj对象序列化json.dumps([1,2])字符串
loadsstr反序列化json.loads('[1,2]')原始数据类型

json是一种序列化的标准,通过json.dumps()函数对对象进行序列化后,对象会以固定的标准返回:

def json_xuliehua():
    b_json = json.dumps('str')
    print('json serialize:', b_json)
    c_json = json.dumps([1,2,3])
    print(c_json)
    d_json = json.dumps((4, 5, 6))
    print(d_json)
    # 字典通过序列化后,键值都用双引号包裹,中文转化成比特类型并编码
    e_json = json.dumps({'name':'xiao明', 'age': 12}) 
    print(e_json)

输出:

json serialize: "str"
[1, 2, 3]
[4, 5, 6]
{"name": "xiao\u660e", "age": 12}

同时,json也是一种文件格式,.json文件中的内容都是字典通过json序列化之后的内容。

例子:将字典通过json序列化后存入json文件,再从json文件中读取内容转换为字典

def write(path, data):
    with open(path, 'w') as f:
        if isinstance(data, dict):
            _data = json.dumps(data)
            f.write(_data)
    
        else:
            raise TypeError('data is not dict')

    return True


def read(path):
    with open(path, 'r') as f:
        result = f.read()
        result = json.loads(result)

    return result

data = {'name':'小明', 'age': 12, 'height': '165cm'}

if __name__ == '__main__':
    write('test.json', data)
    result = read('test.json')
    print(result)
    result['sex'] = 'boy'   # 对读取的内容操作,再次写入test.json
    write('test.json', result)
    result = read('test.json')
    print(result)

输出:

{'name': '小明', 'age': 12, 'height': '165cm'}
{'name': '小明', 'age': 12, 'height': '165cm', 'sex': 'boy'}
    

pickle模块的函数:

pickle模块只在python中使用,在其他语言可能无法处理

函数参数描述例子返回值
dumpsobj对象序列化pickle.dumps([1,2])比特
loadsbyte反序列化pickle.load('[1,2]')原始数据类型

注意:和json不同的是,pickle.dumps()返回的是比特类型,load()函数也只支持对比特类型进行反序列化。

思考:pickle模块的使用场景是哪些?可能是有中文的地方?

def pickle_1():
    data = {'name':'小明', 'age':17, 'height': '178cm'}
    _data = pickle.dumps(data)
    print(_data)
    dese = pickle.loads(_data)
    print(dese)

输出:
b'\x80\x04\x95-\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x06\xe5\xb0\x8f\xe6\x98\x8e\x94\x8c\x03age\x94K\x11\x8c\x06height\x94\x8c\x04178m\x94u.'
{'name': '小明', 'age': 17, 'height': '178m'}

如上,可知,pickle.dumps()函数可以让数据序列化为比特类型,方便在文件中传输比特类型的数据,又可以使用pickle.loads()函数反序列化为原来的数据类型,很方便实用。

进一步:pickle模块还有个load()函数,是处理序列化后的文件的,传参是文件,这个有时间可以研究下。

Python 进阶(十三):JSON 序列化和反序列化(json 模块) 使用JSON模块进行数据序列化和反序列化,您可以方便地在Python和其他应用程序之间进行数据交换。本教程详细介绍了JSON模块的数据序列化和反序列化功能,并提供了代码示例帮助您入门。通过掌握这些基本用法,您可以在自己的项目中有效地使用JSON模块进行数据处理和交互。请注意,本教程仅介绍了JSON模块的基本用法,还有其他一些高级功能和选项可供探索和学习。如需了解更多信息,请参阅Python官方文档中有关JSON模块的详细说明。 阅读详情

相关推荐

Python实现JSON序列化与反序列化:多种方法与案例详解

在编程中,序列化指的是将数据结构(如字典、列表、对象等)转换为一种格式(如JSON、XML等),以便能够存储或传输。反之,反序列化是指将存储或传输的格式化数据重新解析为原始的数据结构。序列化(Serialization):将对象转换为JSON格式。反序列化(Deserialization):将JSON格式的数据解析为Python对象。在Python中,JSON序列化和反序列化主要使用内置的json库。在某些情况下,我们可能需要对JSON数据进行自定义的编码和解码。

闲人编程的博客 2866

Python: 序列化为JSON对象及JSON对象读取

在 Python 中,json模块提供了dump()和dumps()两个主要的函数,用于将 Python 对象转换为 JSON 格式。

Ethan_Rich的博客 895

python使用json模块将python数据写入json文件中、进行数据序列化

python使用json模块将python数据写入json文件中、进行数据序列化

statistics+insight+vista+power 372

Python3对象序列化,即处理JSON和文件(持续更新ing...)

本文介绍Python3对象序列化相关内容,即将Python对象从内存中储存为本地文件、从本地文件中加载Python对象。

诸神缄默不语的博客 1823

BUSCO评估基因组的完整性

因为数据库收集的时候找的就是在不同的物种间都是单拷贝的基因,所以说在评估的物种里面应该也是单拷贝的状态才对。基因组层面评估:先去基因组上预测这些基因,再去做评估,如果说给他是一个注释好的基因集,这个时候提供的是一个蛋白集合,它就直接是去进行同源搜索,再去评估,看BUSCO数据库里面的这些单拷贝基因有或者无;首先,tblastn也是同源搜索,同源搜索之后,去对转录本进行读码框预测,预测完的结果还是去进行hmmsearch的搜索(hmmsearch是做蛋白质结构域搜索的),最终拿到BUSCO评估结果。

qq_64400864的博客 2959

某头部能源集团“数据治理”到“数智应用”跃迁案例剖析

本次案例能源企业实现了从“数据可用”到“指标驱动”再到“智能决策”的全链条升级,标志着集团在数字化、智能化治理能力上的系统跃升,构建起面向未来的数智管理新范式。

a958014226的博客 1258

Python JSON 序列化以及反序列化 文件读写

JSON (JavaScript Object Notation) 是一种轻量级的文本数据存储格式。JSON 数据通常存储在字符串中,即JSON字符串,其实就是一字符串,只是带有一定的格式,可以被解析。

luohaha66的博客 1490

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战)

本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。

weixin_28677005的博客 266

Python文件操作:JSON、CSV、TSV、Excel和Pickle文件序列化

CSV(逗号分隔值)和TSV(制表符分隔值)是常用的纯文本文件格式,用于存储表格数据。CSV文件使用逗号作为字段分隔符,而TSV文件使用制表符。这两种格式在数据导出和导入中很常见。Excel是一种流行的电子表格应用程序,用于处理和分析数据。在Python中,可以使用第三方库openpyxl来读取和写入Excel文件。Pickle是Python的标准模块,用于将Python对象序列化为二进制数据。允许将对象保存到文件中,以便稍后恢复。Pickle对于保存复杂的数据结构非常有用。

Saki_Python的博客 1381

保姆级教程:在爱快iKuai虚拟机里装OpenWrt旁路由,实现去广告和特殊功能

本文提供在爱快iKuai虚拟机中安装OpenWrt旁路由的详细教程,帮助用户实现去广告和特殊功能扩展。通过分步指导,包括虚拟机配置、网络设置和功能优化,打造稳定高效的家庭网络环境,特别适合软路由爱好者和网络管理员。

weixin_31364787的博客 830

图像标注神器:完全开源免费的多功能标注工具Labelme详解

Labelme是MIT开发的免费开源图像标注工具,支持多边形、矩形等多种标注类型,适用于目标检测、分割等计算机视觉任务。提供Windows可执行文件和Python安装两种方式,可输出JSON格式并转换为COCO等标准数据集。具有跨平台、功能全面、社区活跃等优势,能显著提升标注效率,是AI视觉项目的重要数据准备工具。

数字人生 528

Python:文件读写、序列化、反序列化和JSON

文件读写 ①读文件: f = open('/Users/michael/test.txt', 'r')#打开文件 f.read() #读文件 f.close() #关闭文件 ②由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现: try: f = open('/path/to/file', 'r') print(f.read())

weixin_43410294的博客 234

游戏客户端开发工程师笔试题

1、已知有一个关键字序列:(27,23,34,14,1,55, 20,19,85,83,10,68)散列存储在一个哈希表中,若散列函数为H(key)=key%7,并采用链地址法来解决冲突,则在等概率情况下查找成功的平均查找长度为(4、出现死锁时,除了可以采用资源剥夺的方法解决死锁问题外,还可以使用的方法是()是被限定只能在表的一端进行插入运算,在另一端进行删除运算的线性表.5、大端模式,是指数据的高字节保存在内存的(3、在二叉查找树中, 最好情况下复杂度为。)地址中,而数据的低字节保存在内存的(

博客 1873

python基础5—文件 | json序列化

下面这些代码没有经过试验, 只是作为代码段作为日后的参考, 这些死的api姑且放在这里用的时候看一下再做总结 import sys print(sys.path) # ---------------文件---------------------------- # 第一种直接方式 file1 = open("test.txt") file2 = open("output...

diaogu1111的专栏 148

基于simulink的电气弹簧ES稳压控制模型仿真

若要补偿母线电压的谐波,需控制ES上的谐波,即在单闭环母线电压有效值控制的基础上,增加谐波抑制环节来进行谐波控制,现有的各种检测和抑制谐波的方法有采用模拟滤波器、傅里叶分析进行谐波分析、基于瞬时无功功率理论的方法等。当关键负载ZC为电流源型非线性负载时,电路原理图如图7所示,由于电流源型非线性负载可以等效为谐波电流源,关键负载电流ic便会含有谐波分量,导致输电线电流is和母线电压VS同样会含有谐波分量,导致供电质量的严重下降,对用电设备的正常工作造成影响。分别为流过线路阻抗、非关键负载、关键负载的电流,

FPGA/MATLAB学习教程/源码/项目合作开发 1632

深度学习实战103-基于KDD Cup 99数据集的搭建神经网络的检测系统(NIDS),通过对网络流量数据进行分析,提供完整代码

接下来,我们定义一个全连接神经网络模型。return x# 创建数据集和数据加载器# 初始化模型通过以上步骤,我们实现了一个基于PyTorch的简单网络入侵检测系统。这个系统使用KDD Cup 99数据集进行训练和评估。实际应用中,您可以根据需求调整模型结构、超参数以及数据预处理方法。希望对大家有所帮助!如果有任何问题或需要进一步的解释,请随时咨询。

微学AI的博客 1582

Python中XML与JSON文件的IO处理:数据序列化与反序列化

上述代码中,首先使用ET.Element()创建根元素person,再通过ET.SubElement()创建子元素name和age并设置文本内容,最后使用ET.ElementTree()创建XML树对象,并调用write()方法将其写入文件。JSON是一种基于文本的轻量级数据交换格式,它以键值对的形式存储数据,语法与Python中的字典和列表类似,这使得Python对JSON数据的处理非常便捷。在Python中,使用json模块将Python对象转换为JSON格式的字符串,并写入文件,这个过程称为序列化。

2501_91652317的博客 525

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Python基础】文件 I/O,JSON 序列化

Python I/O 基础 最简单直接的输入来自键盘操作,input() 函数暂停程序运行,同时等待键盘输入;直到回车被按下,函数的参数即为提示语。 name = input('your name:') gender = input('you are a boy?(y/n)') welcome_str = 'Welcome to the matrix {prefix} {name}.' welc...

Mr_SCX的博客 501

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python字典序列化是什么意思_python:用json把字典序列化到文件中

标签:#写程序最好是dump一次和load一次,可以存好几个文件import jsoninfo={‘name‘:‘Tom‘,‘age‘:‘12‘,‘job‘:‘work‘,}f=open(‘file1.txt‘,‘w‘)f.write(json.dumps(info))f.close()把字典存入文件中info={‘name‘:‘Tom‘,‘age‘:‘12‘,‘job‘:‘work‘,}f=op...

weixin_39900582的博客 81

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

掌握Python中的文件序列化:Json和Pickle模块解析

在Python中,文件是一个重要的数据处理对象。无论是读取数据、保存数据还是进行数据处理,文件操作都是Python编程中不可或缺的一部分。本文将详细介绍Python中文件操作的几种常用方法,包括open函数的使用、数据序列化与反序列化,以及os模块在文件和目录管理中的应用。

AI心易行者 674

Python数据序列化与文件操作:深入Open、JSON、Pickle和OS模块

open在Python编程中,数据序列化和文件操作是两个基础而强大的功能。序列化允许我们将数据结构转换为一种可以存储或传输的格式,而文件操作则让我们能够与操作系统进行交互,处理文件和目录。本文将深入探讨Python中的open函数、json和pickle模块,以及os模块的使用方法,并提供详细的实例。

H_Hyyy的博客 808

12.python基础学习-文件读写IO操作、json序列号与反序列化,json写入文件

修订日期 内容 2021-2-15 初稿 12.python基础学习-文件相关IO操作文件相关操作打开文件模式(open mode)API读写文件(文本)with open() as f 自动关闭IO流复制图片(测试mode=rb,wb)测试mode = x读取文件read的多种方式APIread(size) 例子readlines()代码例子 文件相关操作 打开文件模式(open mode)API 模式 说明 r 只读,默认 a 文件不存在新建、存在则追加内...

weixin_48470176的博客 257
上一篇: python中datetime模块时间的使用
下一篇: jmeter中设置属性值的用法
幸运的星竹
博客等级 码龄11年 190粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值