python中存取对象类型的数据(json库)

本文介绍了Python中如何处理文件操作时遇到的对象类型问题。当尝试将列表等对象直接写入文件时,会报错。为了解决这个问题,文章详细讲解了利用json库的dumps()和dump()方法对对象进行序列化和反序列化的操作,以便能够正确地读写文件。此外,还展示了loads()和load()方法的用法,用于从文件中读取和转换回原始对象。
摘要由CSDN通过智能技术生成

从文件中读取数据是以字符串的形式读取的,同时,将数据写入文件中也是以字符串的形式写入,但如果写入一个对象(列表,字典等)则会报错。

file = open("file", "w")
data = ["a", "b"]
file.write(data)

以下是代码输出结果:

TypeError: write() argument must be str, not list

如果希望将一个对象类型的数据写入到文件中,则需要将其进行序列化(按照某种规则将内存中的数据转化为字节序列保存到文件中,相反则是反序列化),json库里面提供的dump()和dumps()方法可以将对象进行序列化。

import json

file = open("file", "w")
data = ["a", "b"]
print(type(data))
data = json.dumps(data)
file.write(data)
print(type(data))

以下是代码的输出结果:

<class 'list'>
<class 'str'>

而dump()方法可以在将对象序列化的同时将数据存储到指定的文件中。

import json

file = open("file", "w")
data = ["a", "b"]
json.dump(data, file)

同样的,使用json库中的load()和loads()方法可以将文件中的对象反序列化(将文件中的字符串转化为原来的对象数据)。

import json

file = open("file", "r")
text = file.read()
print(text)
print(type(text))
text = json.loads(text)
print(type(text))

以下是代码的输出结果:

["a", "b"]
<class 'str'>
<class 'list'>

其中,loads()方法需要先将文件读取再反序列化,而load()方法则不需要。

import json

file = open("file", "r")
text = json.load(file)
print(text)

以下是代码的输出结果:

['a', 'b']

该文章主要用来记录作者在学习python时遇到的问题及解决办法,如果有误请各位批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值