2013-06-11 7 views
36

Il mio codice crea un dizionario, che viene quindi memorizzato in una variabile. Voglio scrivere ciascun dizionario in un file JSON, ma voglio che ogni dizionario sia su una nuova riga.Python JSON dump/append to .txt con ogni variabile sulla nuova riga

mio dizionario:

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

parte del mio codice:

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

Questo aggiunge ogni dizionario a 'data.txt' ma lo fa in linea. Voglio che ogni voce del dizionario sia su una nuova riga. Qualsiasi consiglio sarebbe apprezzato.

risposta

63

La tua domanda non è chiara. Se si sta generando hostDict in un ciclo:

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

Se vuoi dire si desidera che ogni variabile all'interno hostDict di essere su una nuova linea:

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

Quando l'argomento indent parola chiave viene impostata aggiunge automaticamente a capo.

+0

Questo l'ha fatto, grazie! –

+2

Quello di cui avevo bisogno era la prima soluzione, dove ogni dict è su una nuova linea. Grazie ancora. I documenti –

+0

sono qui: https://docs.python.org/2/library/json.html#basic-usage – badgley

Problemi correlati