###平时使用python来进行文件读写时,免不了会出现将字典、list数据类型的字符写入到文件中,又或者将文件中读取的数据转换成python数据类型,然后易于操作等,那么此时就需要学会二者之间的互相转换 ###之间很长一段之间都傻傻分不清楚dump、load、dumps、loads,它们什么时候用,用来干什么,现在终于了解明白清楚了,现在一一记录下来,说明每一个的用法
import json
info={
"name":"xiaoming",
"age":12
}
print(type(info)) #dict
####将字典类型的info写入文件
with open ('info.txt','w+',encoding='utf-8') as f:
f.write(info)
#此时会报错,提示写入文件时,必须写的时字符串类型
那么此时,就需要把字典转成字符串写入到文件中,而json字符串就是长得和字典很相像的字符串
那么接下来,我们需要将python数据类型转化成json类型,然后操作文件的读写
#方法一:字典转成json串,然后写入文件
new_info = json.dumps(info)
print(type(new_info)) #str ,此时new_info是字符串类型,再将new_info写入到文件中
with open ('info.txt','w+',encoding='utf-8') as f:
f.write(new_info)
#方法二:直接使用json.dump()
with open ('info1.txt','w+',encoding='utf-8') as f:
json.dump(info,f) #将字典转化成j son字符串,同时写入文件
-------------------------------------我是分割线---------------------------------------
####那么如何将从文件内读取处理的json串转化成python能操作的数据类型呢?这里将使用到load,loads方法,把json串转化成python数据类型
下面举例说明
拿咱们上边写好的"info.txt"文件来说,里边存好了写入的json串
方法一:将文件内容读取出来之后,然后转化类型
第一步读取文件
with open('info.txt','r+',encoding='utf-8') as fr:
con = fr.read()
print('我是文件内容:%s,我的类型是%s'%(con,type(con)))
#我是文件内容:{"name": "xiaoming", "age": 12},我的类型是<class 'str'>
#第二步,将json串转化成python数据类型
new_con = json.loads(con)
print(type(new_con))
#<class 'dict'> 此时我们就可以使用python处理python数据类型了~
方法二:直接在操作文件的时候使用json.load(文件对象),这样读取出来的已经转好为python数据类型
with open('info.txt','r+',encoding='utf-8') as fr:
con=json.load(fr)
print('我是文件内容:%s,我的类型是%s' % (con, type(con)))
#我是文件内容:{'age': 12, 'name': 'xiaoming'},我的类型是<class 'dict'>