用 Python 将 JSON 写入文件
JSON 是一种轻量级且人类可读的文件格式,在行业中大量使用。JSON 代表 JavaScript Object Notation
。顾名思义,JSON 在 Web 开发人员中非常流行,并且在 Web 应用程序中大量使用以从服务器或其他应用程序发送和检索数据。
Python 随附了许多内置的软件包或模块,并通过 Internet 提供了许多外部模块供我们使用。有趣的是,它还具有一个内置模块 json
,用于处理 JSON 数据。
在 Python 中,可以用两种方式表示 JSON。首先,作为字符串。JSON 字符串如下所示。
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
在将 JSON 表示为字符串时,请确保仅使用双引号(""
)来包装键和字符串值。JSON 不支持单引号,如果使用单引号,则会引发错误。
第二种方法是使用 Python 对象或俗称的 Python 字典。它具有与 JSON 类似的语法。
以 Python 字典的形式表示的 JSON 看起来像这样。
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft"
}
同样,请确保仅使用双引号。
使用 Python 中的 json
模块将 JSON 写入文件
假设你有一个以字符串形式存储 JSON 的变量。因此,要将其写入 JSON 文件,你可以使用以下代码。
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
首先,我们导入了 json
模块。然后,我们将 JSON 文件名和 JSON 字符串本身存储在两个变量中。然后,我们将以在写入
模式下选择的名称创建并打开一个新文件。
然后,我们使用 json
模块中的 loads
函数将 JSON 字符串转换为 python 字典以将其写入文件。该函数接受有效的 JSON 字符串,并将其转换为 Python 字典。
请注意,如果为此函数提供了无效的字符串,则会引发
json.decoder.JSONDecodeError
错误。因此,请确保你输入正确的字符串,或者可以使用try-except-finally
块进行错误处理。
接下来,我们使用 json
模块提供给我们的 dump()
方法。此方法接受 python 字典和文件描述符作为其参数,并将字典的数据写入文件。
当且仅当文件未以二进制格式打开时,才可以使用 dump()
方法,即,"wb"
和"rb"
将不起作用并导致 TypeError
。
最后,我们关闭文件,程序退出。根据你在程序中定义的名称的 JSON 文件将在当前目录中创建。
如果工作目录中存在具有相同名称和相同扩展名的文件,则该文件的内容将被覆盖。
现在,假设你希望将 Python 对象或 Python 字典写入 JSON 文件。在这种情况下,请参考以下代码段。
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft"
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
在这种情况下,我们已经有了 Python 对象或字典,并且如上所述,dump()
接受字典作为参数并将其写入文件描述符。因此,我们以写入模式打开文件,使用 dump()
方法将数据写入文件,然后关闭文件。