python文件处理——JSON格式文件
hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。
JSON格式文件
1. JSON格式
定义: JSON(Java脚本对象标注符),是一种轻量级的数据交换格式。python将数据转化为JSON格式(带格式的字符串)的过程叫序列化;把JSON格式转化为python数据类型的过程叫反序列化。
1.1 JSON常用的两种结构数据类型
- “键-值”对的集合。在不同的语言中,“键-值”对被理解为对象(object)、记录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)或者关联数组(associative array)。python中对应的是字典。
- 值得有序列表。在大部分语言中,它被理解为数组(array)。python语言中对应列表、元组。
1.2 JSON数据与python数据之间得互相转化
为了实现不同编程语言编写得文件数据共享,除了需要统一数据结构形式外,还需要统一数据类型。JSON定义了标准数据类型。
1.3 示例
python自带处理JSON数据的json模块,该模块的dumps实现python数据转化为JSON数据,loads实现JSON数据转化为python数据的过程。
import json #导入json模块
p_d = {"tom":29,"jack":20,"jim":12} #定义字典对象p_d
print(p_d)
print('=='*30)
p_to_j = json.dumps(p_d) #通过dumps把字典对象转化为JSON类型
print(p_to_j)
print('=='*30)
j_to_p = json.loads(p_to_j) #把JSON格式转换为python的字典格式
print(j_to_p)
效果:
2. 读取JSON文件
python的json模块为读写JSON文件提供了dump和load操作对象。
2.1 dump、load函数使用介绍
-
dump(obj,f,ensure_ascii=True,…)函数用于把python数据写入JSON文件。
①obj参数,为python语言数据对象
②f参数,以字符串形式指明需要存储的文件名,可以带路径,建议加上扩展名(可以任意指定)。
③ensure_ascii参数,默认值为True,意味着只接受ASCII类型的数据类型(中文存储时会变成\u格式的十六进制形式);为False时,可以接受其他非ASCII类型的数据(包括中文)。 -
load(f,…)函数实现从JSON文件里读取数据。
f参数,以字符串形式指明需要存储的文件名。
2.2 读取JSON文件代码案例
import json
import sys
def saveToJSON(filename,dicObject): #定义写JSON文件函数saveToJSON
flag = False
if type(dicObject)!=dict: #这里只允许字典类型数据保存
return flag
try:
j_file = open(filename,"w") #以写方式打开指定的JSON文件
json.dump(dicObject,j_file,ensure_ascii=False) #以JSON格式写数据
flag=True
except:
print("往%s写入数据出错!"%filename)
finally:
if flag:
j_file.close()
return flag
def GetFromJSON(filename):
flag = False
dicObject = {}
try:
j_file = open(filename,"r")
dicObject = json.load(j_file) #读取JSON文件数据,并转换为python的字典对象
flag = True
except:
print("从%s读JSON数据出错!"%filename)
finally:
if flag:
j_file.close()
return dicObject
d_student = {"name":"wky","age":18,"birthday":"2000年12月25日"}
filename = "student.json" #指定JSON文件名称
f_ok = saveToJSON(filename,d_student) #调用saveToJSON函数
if f_ok:
print("学生信息保存到json文件成功!")
else:
sys.exit() #调用saveToJSON失败,退出程序
d_get_s = GetFromJSON(filename) #调用GetFromJSON函数
if d_get_s: #字典值为非空时,都为True,空为False
print(d_get_s)
效果:
总结
本文属于作者原创,转载请注明出处,不足之处,希望大家能过给予宝贵的意见,如有侵权,请私信。每天一个knowledge point,一起学python,让技术无限发散