【问题标题】:Python - Appending JSON object to exisiting JSON objectPython - 将 JSON 对象附加到现有的 JSON 对象
【发布时间】:2017-02-06 22:09:01
【问题描述】:

我正在尝试将 JSON 对象附加到文本文件中的现有 JSON 对象。我的第一组数据是这样的。

data = [
        {
          "username": "Mike",
          "code": "12345",
          "city": "NYC"
        }
      ]

然后我需要将另一组 JSON 对象附加到现有文件中,如下所示:

data = [
        {
          "username": "Mike",
          "code": "12345",
          "city": "NYC"
        },
        {
          "username": "Kelly",
          "code": "56789",
          "city": "NYC"
        }
      ]

当我尝试运行时:

with open('data2.txt', 'a') as outfile:
    json.dump(data, outfile)

我的数据不是正确的 JSON 格式。能否请您告知如何正确附加到文本文件?

【问题讨论】:

  • 您不能只是附加到文本文件并期望它以某种方式知道如何采用 json 格式。您必须读取文件,转换为 json,然后添加您的值并重新编写它

标签: python json file


【解决方案1】:

这可能不是处理您的请求的最 Pythonic 方式,但我希望它可以帮助您解决可能遇到的一些问题。我将加载和转储包装到 try-except 手镯中,以使代码更加健壮。 对我自己来说,最大的惊喜是你在打开文件作为输出文件时不使用'a',而是使用'w'。但是,如果您认为您已经在“data.append(data1)”行中追加,那么这非常有意义,因此在转储到文件时无需追加两次。

data = [{"username": "Mike", "code": "12345", "city": "NYC"}]
data1 = {"username": "Kelly", "code": "56789", "city": "NYC"}
data2 = {"username": "Bob", "code": "12222", "city": "NYC"}

try:
    with open('append.txt', 'r') as fin:
        data = json.load(fin)
except FileNotFoundError as exc:
    pass

try:
    if data:
        data.append(data1)
        with open('append.txt', 'w') as fout:
            json.dump(data, fout)
except UnboundLocalError as exc:
    with open('append.txt', 'w') as fout:
        json.dump(data, fout)

【讨论】:

    【解决方案2】:

    首先从文件中读取数据。

    with open('data2.txt') as data_file:    
        old_data = json.load(data_file)
    

    然后将您的数据附加到旧数据中

    data = old_data + data
    

    然后重写整个文件。

    with open('data2.txt', 'w') as outfile:
        json.dump(data, outfile)
    

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2016-08-21
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      相关资源
      最近更新 更多