Cum să adăugați într-un fișier json în Python? (Programare, Python, Json)

PythonEnthusiast a intrebat.

Am un fișier json al cărui conținut este {"67790": {"1": {"kwh": 319.4}}}. Acum creez un dicționar a_dict pe care trebuie să îl adaug în fișierul json. Am încercat următoarele, dar nu am reușit să o fac corect. Unde greșesc eu?

with open(DATA_FILENAME, 'a') as f:
   json_obj = json.dump(a_dict, json.load(f)
   f.write(json_obj)
   f.close()

Comentarii

  • Nu trebuie să faceți f.close() atunci când folosiți with open(...) as f: –  > Por huck_cussler.
3 răspunsuri
alecxe

Presupunând că aveți un test.json cu următorul conținut:

{"67790": {"1": {"kwh": 319.4}}}

Apoi, codul de mai jos va load fișierul json, va actualiza datele din interiorul acestuia folosind dict.update() și dump în fișierul test.json fișier:

import json

a_dict = {'new_key': 'new_value'}

with open('test.json') as f:
    data = json.load(f)

data.update(a_dict)

with open('test.json', 'w') as f:
    json.dump(data, f)

Apoi, în test.json, , veți avea:

{"new_key": "new_value", "67790": {"1": {"kwh": 319.4}}}

Sper că este ceea ce ați dorit.

Comentarii

  • Dar dacă am vrea să facem asta ? {„67790”: {„1”: {„kwh”: 319.4, „new_key”: „new_value”, }}} –  > Por amitnair92.
  • Problema este că, folosind opțiunea „w”, se rescrie fișierul de fiecare dată când doriți să modificați sau să adăugați la fișierul json. –  > Por Moshe Rabaev.
  • Cum să adăugați elemente de adăugare la o matrice deja existentă în interiorul JSON? –  > Por backslashN.
  • pentru a adăuga utilizați data["key"].append({"new_key":"new_value"}) –  > Por Kerkness.
  • Cum este data.update(a_dict) nu este în afara domeniului de aplicare sau a limitei. @alexce –  > Por AST.
Nicolas Barbey

Trebuie să actualizați ieșirea din json.load cu a_dict și apoi să aruncați rezultatul. și nu puteți adăuga la fișier, ci trebuie să îl suprascrieți.

kodeslacker
json_obj=json.dumps(a_dict, ensure_ascii=False)

Comentarii

  • Acest lucru nu va suprascrie pur și simplu obiectul? –  > Por Milan Velebit.
  • Se va suprascrie fișierul json cu acest lucru a_dict obiect, dacă nu actualizați a_dict cu toate valorile pe care doriți să le stocați. –  > Por Jagoda Sokół.

Tags:,