Kako napišem podatke JSON v datoteko?
V spremenljivki data
imam shranjene podatke JSON.
Za testiranje jih želim zapisati v besedilno datoteko, tako da mi ni treba vsakič znova zajemati podatkov iz strežnika.
Trenutno poskušam to:
obj = open('data.txt', 'wb')
obj.write(data)
obj.close
In prejmem napako:
TypeError: must be string or buffer, not dict
Kako to popraviti?
982
3
Pozabili ste na dejanski del JSON -
data
je slovar in še ni kodiran v JSON. Za največjo združljivost (Python 2 in 3) ga zapišite takole:V sodobnem sistemu (tj. Python 3 in podpora UTF-8) lahko zapišete lepšo datoteko z
Če želite dobiti datoteko v kodiranju *utf8* v nasprotju z datoteko v kodiranju ascii** v sprejetem odgovoru za Python 2, uporabite:
V Pythonu 3 je koda preprostejša:
V sistemu Windows je argument
encoding='utf-8'
zaopen
še vedno potreben.Če se želite izogniti shranjevanju kodirane kopije podatkov v pomnilniku (rezultat
dumps
) in če želite v Pythonu 2 in 3 izpisati utf8-kodirane bajtstringe, uporabite:Klic
codecs.getwriter
je nepotreben v Pythonu 3, vendar potreben za Python 2Bralnost in velikost:
Uporaba
ensure_ascii=False
omogoča boljšo berljivost in manjšo velikost:Berljivost še izboljšamo, če argumentom
dump
alidumps
dodamo zastaviceindent=4, sort_keys=True
(kot predlaga dinos66). Na ta način boste v datoteki json dobili lepo razvrščeno strukturo z alinejami za ceno nekoliko večje velikosti datoteke.Odgovoril bi z majhno spremembo zgoraj navedenih odgovorov, in sicer da napišete lepšo datoteko JSON, ki jo lahko človeške oči bolje preberejo. V ta namen podajte
sort_keys
kotTrue
inindent
s 4 znaki presledka in lahko začnete. Poskrbite tudi za to, da v datoteko JSON ne bodo zapisane kode ascii: