【问题标题】:How do I append a JSON file?如何附加 JSON 文件?
【发布时间】:2020-09-18 14:23:55
【问题描述】:

如何附加 JSON 文件?我知道如何附加 JSON 变量,但如何附加文件?例如,如果我的 JSON 文件是:

{"people": [{"name" : "Michael Scott", "city": "Scranton"}]}

如果我想给人们添加另一个名字,并且在 JSON 文件中,我该怎么做?

【问题讨论】:

  • 这能回答你的问题吗? python append to array in json object
  • 首先使用json.loads(从字符串加载)加载它们,然后附加名称。然后你可以json.dumps(字符串化)并重写文件

标签: python json file append


【解决方案1】:

假设你的目标 json 是:

# dest.json
{"people": [{"name" : "Michael Scott", "city": "Scranton"}]}

并且您想附加以下 json:

# source.json
{"name" : "Blah Blah", "city": "blah"}

试试:

import json

with open("destination.json") as fd, open("source.json") as fs:
    dest = json.load(fd)
    source = json.load(fs)
    dest["people"].append(source)
with open("destination.json", 'w') as fd:
    json.dump(dest, fd)

【讨论】:

    【解决方案2】:

    你可以试试

    with open("json_exp.txt", "r+") as f:
             json_obj = json.loads(f.read())
             json_obj["people"].append({"name":"new_person"})
             f.seek(0)
             json.dump(json_obj, f)
    

    此代码将读取其中包含 JSON 对象的文本文件,并将新值附加到文件中 JSON 对象生成的 dict 中,然后它将新的 JSON 对象存储到文件中。

    【讨论】:

    • 什么是 f.seek?
    • 要覆盖旧的 JSON 对象而不添加新对象
    • 这是在回答你的问题吗?
    • 让我测试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2012-10-11
    • 2020-05-03
    • 2018-11-17
    相关资源
    最近更新 更多