Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,将字典添加到JSON文件_Python_Json_File_Dictionary_Append - Fatal编程技术网

Python,将字典添加到JSON文件

Python,将字典添加到JSON文件,python,json,file,dictionary,append,Python,Json,File,Dictionary,Append,我的JSON文件如下所示: [ { "lon": 0.0, "altitude": 39000, }, { "lon": 0.0, "altitude": 41000, } ] 我想在本地保存此文件,并从源文件更新。 例如: 刷新的源文件包含新数据: [ { "lon": 19.84227, "altitude": 41000, }, { "lon": 20.068794, "a

我的JSON文件如下所示:

[
  { 
    "lon": 0.0, 
    "altitude": 39000, 
  }, 
  {
    "lon": 0.0, 
    "altitude": 41000, 
   }
]
我想在本地保存此文件,并从源文件更新。 例如: 刷新的源文件包含新数据:

[
  { 
    "lon": 19.84227, 
    "altitude": 41000, 
  }, 
  {
    "lon": 20.068794, 
    "altitude": 38000, 
  } 
]
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()
如何附加本地JSON文件,在文件末尾添加2个新字典,以实现以下目的:

[
  {
     values
  },
  {
     values
  },          <<< add " , " and new part of dictionaries
  {
     values
  },
  {
     values
  }
[
[
 ....
][     << [ and ] must be only at the beggining and end of file
 ....
]
[
{
价值观
},
{
价值观

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

用新数据追加JSON文件:

[
  { 
    "lon": 19.84227, 
    "altitude": 41000, 
  }, 
  {
    "lon": 20.068794, 
    "altitude": 38000, 
  } 
]
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()
搜索“][”并将其替换为“,”

另存为新文件

f = open('data_new.json','w')
f.write(new_data)
f.close()
删除旧文件并重命名新文件

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

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