2017-06-20 5 views
0

おはよう!私はPython辞書とjsonについて質問があります!一つのファイルで、私は、この構造のJSON辞書を作成しています:python dictにkeyの新しい値を追加します。別のファイルからjsom

{"face_1": {"face_rect": "(127, 68, 177, 177)", "Age": 1, "Gender": 1}} 

それは、このコード使用するための式(I - 顔の数、(X、Y、W、H) - RECTをCOORDの。。):

for i, (x, y, w, h) in enumerate(faces): 
     face = dict() 
     face["face_{}".format(i + 1)] = {"face_rect": str((x, y, w, h)), "Age": 1, "Gender": 1} 
     with open('face.json', 'a') as fp: 
      data_to_write = json.dumps(face) 
      fp.write(data_to_write + '\n') 

この部分の前にはすべて素晴らしいです。私の質問 - 別のpyファイルでこの辞書(face.json)を開き、 'Age'、 'Gender'の値を変更して保存する方法は? ありがとうございました!

+0

あなたは 'json.dumps'をすでに知っているので' json.load'を使うことを提案します - ファイルをターゲットとして 'json.dump'を直接使用することさえできますか? B.t.w.あなたのコードで 'i + 1'として一度だけ' i'を使用するので、おそらく '... enumerate(faces、start = 1):'を最初から使用することを検討してください。 – Dilettant

答えて

1

あなたは辞書をロードするためにjson.loadを使用することができます。

with open('face.json') as fp: 
    data = json.load(fp) 

# Make some modifications here. 

次にあなたがjson.dumpを使用して再度データを保存することができます

with open('face.json', 'w') as fp: 
    json.dump(data, fp) 

注意として、手動fp.writeを起動する必要がないことjson.dumpはこれを既に処理しています。また、ファイルを開くときに、'a'の代わりにモード'w'を使用する場合は、古いデータを上書きせずに新しい辞書を最後に追加するだけで済みます。これによりjson形式も無効になります。

関連する問題