【问题标题】:Python, add dictionary to JSON filePython,将字典添加到 JSON 文件
【发布时间】:2015-03-21 17:11:49
【问题描述】:

我的 JSON 文件如下所示:

[
  { 
    "lon": 0.0, 
    "altitude": 39000, 
  }, 
  {
    "lon": 0.0, 
    "altitude": 41000, 
   }
]

我想在本地保存这个文件并从源文件更新。 例如: 刷新的源文件有新数据:

[
  { 
    "lon": 19.84227, 
    "altitude": 41000, 
  }, 
  {
    "lon": 20.068794, 
    "altitude": 38000, 
  } 
]

如何附加本地 JSON 文件以在文件末尾添加 2 个新字典以具有此:

[
  {
     values
  },
  {
     values
  },          <<< add " , " and new part of dictionaries
  {
     values
  },
  {
     values
  }
[

我尝试附加 JSON 文件,但我有这个:

[
 ....
][     << [ and ] must be only at the beggining and end of file
 ....
]

怎么样?

【问题讨论】:

  • 您可以将 json 文件加载到 2 个 python 列表中,将它们连接起来,然后将它们转储回文件中。当然,dicts 中键的其他格式/顺序可能会丢失(但就 JSON 而言,它是等效的)...
  • 但是文件中的数据增长得非常快,在我的一个文件中。 60 个字典,包含 10-12 个值。文件每秒刷新一次,几分钟后文件有 ~15000 行!
  • 您可能能够缓存 JSON 文件的内容,这样您就不必每次都加载它...但如果重要的是,您需要在每次更新时都将其写出来磁盘上的版本始终包含所有最新添加的内容。
  • 磁盘上的文件不需要是最新版本的,可以一次保存,只是为了更早的数据没有被删除。并且可以中断程序并在恢复将新数据添加到文件后。

标签: python json file dictionary append


【解决方案1】:

我找到了简单的解决方案:

使用新数据附加 JSON 文件:

import os, json

with open('data.json', 'a') as fp:
    json.dump(j_data, fp, indent = 2)
fp.close()

f = open('data.json','r')
old_data = f.read()
f.close()

搜索“][”并将其替换为“,”

new_data = old_data.replace("][", ",")

另存为新文件

f = open('data_new.json','w')
f.write(new_data)
f.close()

删除旧文件并重命名新文件

os.remove('data.json')
os.rename('data_new.json', 'data.json')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 2020-02-19
    • 2015-06-24
    • 2015-10-22
    • 2021-08-28
    • 1970-01-01
    • 2023-04-08
    • 2022-01-23
    相关资源
    最近更新 更多