使用JSON保存和加载Python数据【Programming(Python)】
![作者头像](https://ask.qcloudimg.com/avatar/male/SkLDgCWSd7.png)
JSON 格式使您不必创建自己的数据格式,如果您已经了解Python,它就特别容易学习。这是在Python中使用它的方法。
![](https://ask.qcloudimg.com/draft/6649215/f1ceccwtgb.png)
JSON代表JavaScript对象符号。 这种格式是一种以键-值排列方式存储数据的流行方法,因此以后可以轻松对其进行解析。 但是,不要让这个名称愚弄您:您可以在Python中使用JSON(而不仅仅是JavaScript)作为存储数据的简便方法,本文将演示如何入门。
首先,看一下这个简单的JSON代码片段:
{
"name":"tux",
"health":"23",
"level":"4"
}
这是纯JSON,并且未针对Python或任何其他语言进行更改。 但是,如果您熟悉Python,您可能会注意到,这个示例JSON代码看起来非常像Python字典。 实际上,两者非常相似:如果您熟悉Python列表和字典,那么JSON很适合您。
以JSON格式存储数据
如果您的应用程序需要存储一些复杂的数据,则可以考虑使用JSON。 虽然您以前可能曾使用自定义文本配置文件或数据格式,但JSON为您提供了结构化的递归存储,而Python的JSON模块提供了将这些数据传入和传出应用程序所需的所有解析库。 因此,您不必自己编写解析代码,其他程序员在与应用程序进行交互时也不必解码新的数据格式。 因此,JSON易于使用且无处不在。
以下是在字典中使用字典的一些示例Python代码:
#!/usr/bin/env python3
import json
# instantiate an empty dict
team = {}
# add a team member
team['tux'] = {'health': 23, 'level': 4}
team['beastie'] = {'health': 13, 'level': 6}
team['konqi'] = {'health': 18, 'level': 7}
这段代码创建了一个名为team的Python字典。 最初是空的(您可以创建一个已经填充的数据,但是如果您还没有将数据放入字典的话,那是不可能的)。
要添加到dict对象,您可以在示例代码中创建一个键(例如tux , beastie或konqi) ,然后提供一个值。 在这种情况下,该值为另一个充满玩家统计信息的词典。
字典是可变的。 您可以随意添加,删除和更新它们包含的数据。 此格式是应用程序经常使用的数据的理想存储。
以JSON格式保存数据
如果要存储在词典中的数据是需要在应用程序退出后保留的用户数据,则必须将数据写入磁盘上的文件中。 这是JSON Python模块进来的地方:
with open('mydata.json', 'w') as f:
json.dump(team, f)
代码块创建一个名为mydata.json的文件,并在写入模式下将其打开。 该文件用变量f表示(一个完全任意的名称;您可以使用任何喜欢的变量名,例如file , FILE , output或几乎任何名称)。 同时,JSON模块的转储功能用于将数据从dict转储到数据文件中。
从您的应用程序中保存数据就是这么简单,而最好的部分是数据是结构化的和可预测的。 要查看,请查看生成的文件:
$ cat mydata.json
{"tux": {"health": 23, "level": 4}, "beastie": {"health": 13, "level": 6}, "konqi": {"health": 18, "level": 7}}
从JSON文件读取数据
如果要将数据保存为JSON格式,则可能最终希望将数据读回到Python中。 为此,请使用Python JSON模块的json.load函数:
#!/usr/bin/env python3
import json
f = open('mydata.json')
team = json.load(f)
print(team['tux'])
print(team['tux']['health'])
print(team['tux']['level'])
print(team['beastie'])