2016-05-24 141 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格式返回查詢。