web-dev-qa-db-fra.com

Python JSON dump / append to .txt avec chaque variable sur la nouvelle ligne

Mon code crée un dictionnaire, qui est ensuite stocké dans une variable. Je veux écrire chaque dictionnaire dans un fichier JSON, mais je veux que chaque dictionnaire soit sur une nouvelle ligne.

Mon dictionnaire:

hostDict = {"key1": "val1", "key2": "val2", "key3": {"sub_key1": "sub_val2", "sub_key2": "sub_val2", "sub_key3": "sub_val3"}, "key4": "val4"}

Une partie de mon code:

g = open('data.txt', 'a')
with g as outfile:
  json.dump(hostDict, outfile)

Ceci ajoute chaque dictionnaire à 'data.txt' mais en ligne. Je veux que chaque entrée du dictionnaire soit sur la nouvelle ligne. Tout avis sera le bienvenu.

50
Victor S

Votre question n'est pas claire. Si vous générez hostDict dans une boucle:

with open('data.txt', 'a') as outfile:
    for hostDict in ....:
        json.dump(hostDict, outfile)
        outfile.write('\n')

Si vous voulez dire que vous voulez que chaque variable dans hostDict soit sur une nouvelle ligne:

with open('data.txt', 'a') as outfile:
    json.dump(hostDict, outfile, indent=2)

Lorsque l'argument de mot clé indent est défini, il ajoute automatiquement des nouvelles lignes.

91
agf