2013-06-11 10 views
36

Mój kod tworzy słownik, który jest następnie zapisywany w zmiennej. Chcę napisać każdy słownik do pliku JSON, ale chcę, aby każdy słownik był w nowym wierszu.Python JSON zrzuca/dodaje do .txt z każdą zmienną w nowej linii

Mój słownik:

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

Część mojego kodu:

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

ten dołącza do każdego słownika 'data.txt', ale robi to inline. Chcę, aby każdy wpis słownika był w nowej linii. Każda rada byłaby doceniona.

Odpowiedz

63

Twoje pytanie jest trochę niejasne. Jeśli generowanie hostDict w pętli:

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

Jeśli chcesz znaczy każda zmienna w ciągu hostDict się w nowym wierszu:

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

Gdy argument indent parametr jest ustawiony automatycznie dodaje nowe linie.

+0

To się udało, dziękuję! –

+2

To, czego potrzebowałem, to pierwsze rozwiązanie, w którym każdy dyktant znajduje się na nowej linii. Dzięki jeszcze raz. –

+0

dokumenty są tutaj: https://docs.python.org/2/library/json.html#basic-usage – badgley