在上一篇《手把手陪您学Python》34——文件的写入中,我们学习了两种文件写入的方法,同时,演示了不同文件打开模式对于读写操作的区别。
今天将要学习的数据的存储其实也是一种文件的写入,只不过之前写入的主要是字符串,而今天我们会使用一种特定的数据格式进行文件的存储和读取,这种格式就是——JSON。
1、JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁和清晰的层级结构,既方便人们的阅读和编写,也易于机器的解析和生成,能够有效提升网络传输效率。JSON最初是为JavaScript开发的,但随后成了一种常见的标准化数据格式,被广泛使用在包括Python在内的众多编程语言中。
使用JSON这种标准化的数据格式进行数据存储,能够方便地在不同编程语言以及网络中进行传输和共享。在Python的一个重要应用分支爬虫中,就是使用JSON格式进行网页信息的爬取以及存储的。
关于JSON的具体格式目前还不需要了解太多,后面如果有需要,我们再介绍。
2、JSON数据的存储
我们之前学习的文件写入方法是write()和writelines(),这里写入的内容主要是字符串格式的。如果要写入或者存储JSON格式的数据,需要使用json.dump()函数。
json.dump()函数包括两个参数,一个是要存储的数据内容,另一个是用于存储数据的文件名称(包括路径)。和我们写入文件一样,存储JSON数据前,也需要使用open()打开文件,并选择合适的打开模式。
此外,由于dump()函数并不是Python的内置函数 ,需要先导入json模块才能够使用,之前json.dump()的写法其实也是模块名和函数名的组合。这块可以参考《手把手陪您学Python》30——模块中介绍的内容。
In [1]: import json
path = 'lesson/text/blank.txt'
data = '《手把手陪您学Python》1——为什么要学Python?' # 写入字符串
with open(path, encoding = 'utf-8', mode = 'w+') as file_object:
json.dump(data, file_object)
使用json.dump()存储数据后,也同样是没有输出的,如果打开文件,可以看到我们刚刚存储的数据已经保存在了文件中。
3、JSON数据的读取
读取JSON需要json模块里的特定函数json.load(),这样我们就可以把刚才存储的数据读取出来了。
In [2]: import json
path = 'lesson/text/blank.txt'
with open(path, encoding = 'utf-8') as file_object:
print(json.load(file_object))
Out[2]: 《手把手陪您学Python》1——为什么要学Python?
4、其他数据类型的写入和读取
除了刚才演示的字符串,JSON还支持数组和词典的存储,而这两种数据类型正是JSON格式最主要的数据结构组成部分。
In [3]: import json
path = 'lesson/text/blank.txt'
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] # 写入数组
with open(path, encoding = 'utf-8', mode = 'w+') as file_object:
json.dump(data, file_object)
file_object.seek(0)
print(json.load(file_object))
Out[3]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
In [4]: import json
path = 'lesson/text/blank.txt'
data = {'1': 'a', '2': 'b', '3': 'c'} # 写入字典
with open(path, encoding = 'utf-8', mode = 'w+') as file_object:
json.dump(data, file_object)
file_object.seek(0)
print(json.load(file_object))
Out[4]: {'1': 'a', '2': 'b', '3': 'c'}
以上就是基于JSON数据格式的存储和读取过程,由于我们之前已经学习了文件的读取和写入方法,所以理解这一部分内容会相对比较轻松。