【问题标题】:How to append in a json file in Python?如何在 Python 中追加一个 json 文件?
【发布时间】:2013-09-29 13:50:07
【问题描述】:

我有一个内容为{"67790": {"1": {"kwh": 319.4}}} 的json 文件。现在我创建了一个字典a_dict,我需要将它附加到 json 文件中。我尝试了以下但无法正确执行。我哪里错了?

with open(DATA_FILENAME, 'a') as f:
   json_obj = json.dump(a_dict, json.load(f)
   f.write(json_obj)
   f.close()

【问题讨论】:

  • 使用with open(...) as f:时不需要f.close()

标签: python json


【解决方案1】:

假设您有一个test.json 文件,其内容如下:

{"67790": {"1": {"kwh": 319.4}}}

然后,下面的代码将loadjson文件,使用dict.update()dump更新里面的数据到test.json文件中:

import json

a_dict = {'new_key': 'new_value'}

with open('test.json') as f:
    data = json.load(f)

data.update(a_dict)

with open('test.json', 'w') as f:
    json.dump(data, f)

然后,在test.json,您将拥有:

{"new_key": "new_value", "67790": {"1": {"kwh": 319.4}}}

希望这是你想要的。

【讨论】:

  • 如果我们想这样做呢? {"67790": {"1": {"kwh": 319.4,"new_key": "new_value", }}}
  • 问题在于,使用“w”选项,每次你想更改或添加到 json 文件时,它都会重写文件。
  • 如何将添加元素追加到 JSON 中已经存在的数组中?
  • 追加使用data["key"].append({"new_key":"new_value"})
  • data.update(a_dict) 如何不超出范围或边界。 @亚历山大
【解决方案2】:

您需要使用 a_dict 更新 json.load 的输出,然后转储结果。 而且你不能追加到文件,但你需要覆盖它。

【讨论】:

    【解决方案3】:
    json_obj=json.dumps(a_dict, ensure_ascii=False)
    

    【讨论】:

    • 这不会覆盖对象吗?
    • 它将用这个 a_dict 对象覆盖 json 文件,除非您使用要存储的所有值更新 a_dict
    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2017-05-22
    • 2017-10-17
    • 2016-03-18
    相关资源
    最近更新 更多