在上一篇《手把手陪您学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数据格式的存储和读取过程,由于我们之前已经学习了文件的读取和写入方法,所以理解这一部分内容会相对比较轻松。