json.dumps()和json.dump(),json.loads()和json.load()的区别

引言

json模块在深度学习模型的运行过程中起着非常重要的作用,存储模型运行的配置信息。如何将python字典对象变成json格式字符串或直接写入json文件,以及如何从json文件中读取配置信息,是本文主要关注的重点。

目录

一、json.dumps()和json.dump()

1.json.dumps()

2.json.dump()

二、json.loads()和json.load()

1.json.loads()

2.json.load()

三、总结


一、json.dumps()和json.dump()

1.json.dumps()

语法

json.dumps(obj)

把python字典对象变成json格式的字符串并返回该字符串。 

示例代码

(1)将一个python字典对象转换成json格式字符串

import json
data = {"orange":6,"apple":1,"banana":3}
print(f"数据类型为{type(data)}")     #<class 'dict'>
json_str = json.dumps(data)        
print(json_str)                     #{"orange": 6, "apple": 1, "banana": 3}
print(f"数据类型为{type(json_str)}") #<class 'str'>

 将python对象转换成json格式的字符串,如果想输出格式更美观可以设置indent参数缩进数据,设置sort_keys=true,按照键名排序。

(2)将多个python字典对象逐个存储于txt文件中

import json

#将列表中的字典对象逐个写入文件,并对每个键拼接前缀类别信息fruit_
dict_list = [{"orange":6,"apple":1,"banana":3},{"strawberry":4,"pear":5}]
with open("data.txt",mode='a') as file:
    for dict_elem in dict_list:
        log_stats = {f"fruit_{k}":v for k,v in dict_elem.items()}    
        file.write(json.dumps(log_stats) + '\n')    #实验数据写入日志文件

#结果
{"fruit_orange": 6, "fruit_apple": 1, "fruit_banana": 3}
{"fruit_strawberry": 4, "fruit_pear": 5}

2.json.dump()

语法

json.dump(obj,fp)

直接将python字典对象写进json文件,没有任何返回值。obj参数为python字典对象,fp参数为文件路径字符串。 

示例代码

(1)将一个python字典对象存入文件

data = {"orange":6,"apple":1,"banana":3}
with open('./data.json','w') as f:
    json.dump(data,f)

(2) 将多个python字典对象逐个存储于txt文件中

#将列表中的多个字典对象逐个写入文件
dict_list = [{"orange":6,"apple":1,"banana":3},{"strawberry":4,"pear":5}]
with open("data.txt",mode='a') as file:
    for dict_elem in dict_list:
        log_stats = {**{f"fruit_{k}":v for k,v in dict_elem.items()},}
        json.dump(log_stats,file)   #将实验结果存入文件file中
        file.write('\n')            #每条实验结果后追加换行
#结果
{"fruit_orange": 6, "fruit_apple": 1, "fruit_banana": 3}
{"fruit_strawberry": 4, "fruit_pear": 5}

二、json.loads()和json.load()

1.json.loads()

语法

json.loads(s)

与dumps函数功能相反主要是将json格式字符串转换成python字典对象。

示例代码

json_str = "{'orange': 6, 'apple': 1, 'banana': 3}"
python_obj = json.loads(json_str)
print(python_obj)                        #{'orange': 6, 'apple': 1, 'banana': 3}
print(f"数据类型为{type(python_obj)}")    #<class 'dict'>

2.json.load()

语法

json.load(fp)

直接从json文件中加载python字典对象, fp参数为文件路径。

示例代码

with open('./data.json','r') as f:
    dict_obj = json.load(f)
print(dict_obj)         # {'orange': 6, 'apple': 1, 'banana': 3}
print(type(dict_obj))   # #<class 'dict'>

三、总结

1.字符串操作:json.dumps()是将python对象变成json格式字符串,而json.loads()功能与其相反是从字符串中获得json数据并变成python字典对象。

2.文件操作:json.dump()是将python对象直接写入json文件中,而json.load()是从文件中读取出json数据转换成python字典对象。

3.在工程项目中,将多个字典对象写入txt日志文件用于保存实验记录时,经常用json.dumps()将数据变成符合存储要求的字符串,用file.write()函数把处理后的json字符串写入文件。json.dump()则对处理后的数据记录直接处理写入文件,没有换行功能需要追加一行file.write('\n')。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值