使用JSON保存和加载Python数据

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}
团队 。 最初是空的(您可以创建一个已经填充的数据,但是如果您还没有将数据放入字典的话,那是不可能的)。

要添加到dict对象,请在示例代码中创建一个键,例如tuxbeastiekonqi ,然后提供一个值。 在这种情况下,该值是充满玩家统计信息的另一个词典。

字典是可变的。 您可以随意添加,删除和更新它们包含的数据。 此格式是应用程序经常使用的数据的理想存储。

以JSON格式保存数据

如果您存储在字典中的数据是需要在应用程序退出后保留的用户数据,那么您必须将数据写入磁盘上的文件中。 这是JSON Python模块进来的地方:


   
   
with open('mydata.json', 'w') as f:
    json.dump(team, f)

此代码块创建一个名为mydata.json的文件,并在写入模式下将其打开。 该文件用变量f表示(一个完全任意的名称;您可以使用任何喜欢的变量名,例如fileFILEoutput或几乎任何名称)。 同时,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'])
print(team['beastie']['health'])
print(team['beastie']['level'])

# when finished, close the file
f.close()

此函数或多或少地实现了保存文件的相反操作:任意变量( f )代表数据文件,然后JSON模块的load函数将数据从文件中转储到任意team变量中。

代码示例中的print语句演示了如何使用数据。 在dict键上复合dict键可能会造成混淆,但是只要您熟悉自己的数据集,或者可以读取JSON源以获取其心智图,那么逻辑就很有意义。

当然, 打印语句不必进行硬编码。 您可以使用for循环重写示例应用程序:


   
   
for i in team.values():
    print(i)

使用JSON

如您所见,JSON与Python完美地集成在一起,因此当您的数据适合其模型时,这是一种很好的格式。 JSON灵活且易于使用,学习一个基本上意味着您正在学习另一个,因此,下次使用Python应用程序时,请考虑将其用于数据存储。

翻译自: https://opensource.com/article/19/7/save-and-load-data-python-json

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值