前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用JSON保存和加载Python数据【Programming(Python)】

使用JSON保存和加载Python数据【Programming(Python)】

作者头像
Potato
修改2019-12-02 11:22:11
5.5K0
修改2019-12-02 11:22:11
举报

JSON格式使您不必创建自己的数据格式,如果您已经了解Python,它就特别容易学习。这是在Python中使用它的方法。

图片来源:Jason Baker. CC BY-SA 4.0.
图片来源:Jason Baker. CC BY-SA 4.0.

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'])
 print(team['beastie']['health'])
 print(team['beastie']['level'])
 
 # when finished, close the file
 f.close()

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

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

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

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

使用JSON

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

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以JSON格式存储数据
  • 以JSON格式保存数据
  • 从JSON文件读取数据
  • 使用JSON
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档