当前位置: 首页 > 面试题库 >

如何使用Python更新JSON文件?

齐磊
2023-03-14
问题内容

我正在使用Python,并且有一个JSON文件,我想在其中更新与给定键相关的值。也就是说,我my_file.json包含以下数据

{"a": "1", "b": "2", "c": "3"}

并且我只想将与b键相关的值从更改为29以便更新后的文件如下所示:

{"a": "1", "b": "9", "c": "3"}

我该怎么做?

我尝试了以下操作,但没有成功(更改未保存到文件中):

with open('my_file.json', 'r+') as f:
    json_data = json.load(f)
    json_data['b'] = "9"
    f.close()

问题答案:

您根本没有保存更改的数据。您必须先加载,然后修改,然后再保存。无法就地修改JSON文件。

with open('my_file.json', 'r') as f:
    json_data = json.load(f)
    json_data['b'] = "9"

with open('my_file.json', 'w') as f:
    f.write(json.dumps(json_data))

您也可以这样做:

with open('my_file.json', 'r+') as f:
    json_data = json.load(f)
    json_data['b'] = "9"
    f.seek(0)
    f.write(json.dumps(json_data))
    f.truncate()

如果要确保安全,请首先将新数据写入同一文件夹中的临时文件,然后将该临时文件重命名为原始文件。这样,即使之间发生任何事情,您也不会丢失任何数据。

如果您想到这一点,JSON数据就地更改非常困难,因为数据长度不是固定的,并且更改可能非常重要。



 类似资料:
  • 问题内容: 我有一个如下的json文件,我想使用更新值 update.json 我想编写一个PowerShell脚本,在其中 如何使用参数? 问题答案: 这是一种方法: 根据@FLGMwt和@mikemaccana,我改进了with,因为默认深度值为2,对于深度大于2的对象,尽管有对象,您仍会收到类信息。

  • 问题内容: 这是我的 JSON 我需要升级到基于 如何在PHP中实现呢? 问题答案: 首先,您需要对其进行解码: 然后更改数据: 然后重新编码并将其保存回文件中:

  • 我有以下不便之处,我想只使用PostgreSQL更新JSON数组的键。我有以下json: 如果“othern”=X,我需要将“othern”更新为另一个数字 (X是我传递给查询的任何数字。例如,如果othern=5,则更新othern)。 这个JSON可能要大得多,所以我需要一些可以在JSON数组中迭代的东西,找到所有与X数匹配的“othern”,并替换为新的。非常感谢。 我尝试了Postgres

  • 我在Elasticsearch中索引了一个文档,如下所示: 我尝试通过以下命令更新计数字段: 但是,我收到了以下错误: 我到底做了什么,却不见了?我在http://www.elasticsearch.org/guide/reference/api/update.html跟踪文件,但它不起作用。 此外,我还包括父字段: 但还是没有成功。有人能帮我解决这个错误吗?

  • 问题内容: 如果我忽略了一些很明显的东西,就可以选择应用程序;我刚刚找到了并且正在尝试使用它来更新一个JSON值而不影响周围的数据。 我想将结果传送到,更新值,然后将更新的JSON传送到。就像是 到目前为止,我已经使用一起破解了它,但是在查看了一些运算符示例之后,我确定我不需要这些。 这是一个JSON示例- 在保留其余JSON的同时,如何使用set ? 问题答案: 您可以使用运算符设置对象的值。

  • 问题内容: 我已从2012年初开始安装2.7版。对于在安装最新版本之前是否应该完全卸载并擦除此版本,我无法达成共识。 “软件”删除旧版本?硬删除/清除旧版本?安装在顶部? 我在某处看到了一个特殊的安装/升级过程,该过程使用Python安装的“分段”方法,将不同的版本分开并保持功能。不知道这是否是事实上的标准方法。 我还想知道Revo是否太过热情,是否可能导致清除仍然需要的残留物(例如环境/ PAT