2016-05-24 92 views
1

我想将某些内容添加到.json文件。Python json - 编辑.json文件

这是节省

 "106569102398611456" : { 
     "currentlocation" : "Pallet Town", 
     "name" : "Anthony", 
     "party" : [ 
      { 
       "hp" : "5", 
       "level" : "1", 
       "pokemonname" : "bulbasaur" 
      } 
     ], 
     "pokedollars" : 0 
    } 
} 

我想要做的就是一个命令别的东西添加到“党”。这是我想要的一个例子。

"106569102398611456" : { 
     "currentlocation" : "Pallet Town", 
     "name" : "Anthony", 
     "party" : [ 
      { 
       "hp" : "5", 
       "level" : "1", 
       "pokemonname" : "bulbasaur" 
      }, 
      { 
       "hp" : "3", 
       "level" : "1", 
       "pokemonname" : "squirtle" 
      } 

     ], 
     "pokedollars" : 0 
    } 
} 

编辑:

这是我尝试过,但我不知道

def addPokemon(pokemon): 
    pokemonName = convert(pokemon) 
    for pokemon in players['party']: 
     pokemon.append(pokemonName) 

转换(口袋妖怪)基本上抓住口袋妖怪我输入和变革给它的水平和要添加到.json文件中的健康

+0

使用append()方法有什么问题? –

+0

你试过了什么?你能告诉我们一些代码吗?任何错误信息? – glls

+0

我不太确定从哪里开始在文件中添加额外的东西 – syntax

回答

1

要更新JSON文件,请将对象写出到临时文件,然后用临时文件替换目标文件。示例:

import json 
import os 
import shutil 
import tempfile 

def rewriteJsonFile(sourceObj, targetFilePath, **kwargs): 
    temp = tempfile.mkstemp() 
    tempHandle = os.fdopen(temp[0], 'w') 
    tempFilePath = temp[1] 
    json.dump(sourceObj, tempHandle, **kwargs) 
    tempHandle.close() 
    shutil.move(tempFilePath, targetFilePath) 

这假定更新是连续发生的。如果更新可能并行发生,则需要某种锁定才能确保一次只进行一次更新。尽管在这一点上,您最好使用类似sqlite的数据库并以JSON格式返回查询。