Rječnik možemo zapisati u datoteku u Pythonu na različite načine, poput:
- Datoteka vrijednosti razdvojena zarezima (.csv)
- Json datoteka (.json)
- Tekstualna datoteka (.txt)
- Datoteka za turšiju (.pkl)
Objasnit ćemo sve gore navedene metode.
Metoda 1: Spremite rječnik u CSV formatu
Za spremanje rječnika u CSV (Zarezom odvojene vrijednosti) koristimo CSV modul. Vrijednosti odvojene zarezima za spremanje python dicta najčešća su i poznata metoda. Većina programera koristi ovu metodu samo za spremanje riječi u datoteku. Spremanje rječnika u datoteku kao CSV vrlo je jednostavno jer podatke moramo prenijeti kao niz.
Primjer_1: dict_to_csv.py
# dict_to_csv.py
uvoz csv
dict_sample= {'Ime':'LinuxHint', 'Grad':'DA', 'obrazovanje':'Inženjering'}
s otvorena('data.csv', 'u') kaof:
zaključudict_sample.ključeve():
f.pisati('% s,% s n'%(ključ,dict_sample[ključ]))
Redak 2 : Uvozimo CSV python modul.
Red 4 : Napravili smo uzorak dict podataka. Pokušat ćemo ga spremiti u obliku CSV datoteke.
Red 6: Ovdje koristimo izraz 'with' za pisanje CSV datoteke. Naredba 'with' automatski obrađuje iznimke tijekom čitanja ili pisanja datoteke. Otvorimo datoteku data.csv u načinu pisanja i dodijelimo taj objekt varijabli f.
Red 7 , Pokrećemo for petlju koja izdvaja ključ, au sljedećem retku zapisuje ključ i key_value u CSV datoteku. Dakle, ova će se petlja izvoditi sve dok nema podataka.
Izlaz: data.csv
Ime,LinuxHintGrad,DA
obrazovanje,Inženjering
Dakle, gore navedeno prikazuje izlaznu datoteku nakon pisanja na data.csv.
Sada razumijemo kako spremiti dict u datoteku u obliku CSV -a. Pokušajmo s drugim primjerom gdje želimo zapisati popis dict objekata u CSV datoteku.
Primjer_2: dict_to_csv_2.py
# dict_to_csv_2.pyuvoz csv
csvColumns= ['Grad', 'Zemlja', 'Rang']
dictDemo= [
{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
]
csvFileName= 'data.csv'
probati:
s otvorena(csvFileName, 'u') kaof:
pisac= csv.DictWriter(f,imena polja=csvColumns)
pisac.zaglavlje pisanja()
zapodaciudictDemo:
pisac.writerow(podaci)
osim IOError:
ispisati('Došlo je do pogreške')
Redci 3 do 12: Uvozimo python CSV modul i stvaramo popis dict objekata. Također smo izradili popis naziva stupaca.
Redak 13: Varijabli smo dodijelili naziv CSV datoteke.
Redak 15: Koristimo izraz 'with', a izraz je dodijelio objekt __enter__ metodi povratni objekt varijabli f.
Redci 16 do 19: Nakon dodjeljivanja povratnog objekta varijabli f, pozvali smo metodu DictWriter CSV modula i proslijedili dva parametra (naziv datoteke (f) i nazive stupaca). Zatim pozivamo drugu metodu writeheader () koja će napisati prvi redak CSV datoteke, što je općenito naziv polja. Zatim pokrećemo for petlju na popisu dict objekata i upisujemo jedan po jedan u CSV datoteku metodom writerow ().
Metoda 2: Spremite rječnik u tekstualnu datoteku u JSON formatu (način dodavanja)
Također možemo spremiti dict objekte u obliku JSON -a u datoteku. Donji kod će objasniti isto. Ovaj kôd također objašnjava kako možemo dodati novi JSON na postojeći popis JSON -a.
Primjer : dict_to_file_asJSON.py
#dict_to_file_asJSON.pyuvozjson
dictDemo= [
{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
]
naziv datoteke= 'dict.json'
# Zapisivanje popisa dict objekata u datoteku
s otvorena(naziv datoteke,načinu rada='u') kaof:
json.istovariti(dictDemo,f)
# Pisanje novog dict objekta u datoteku kao dodavanje i prepisivanje cijele datoteke
s otvorena(naziv datoteke,načinu rada='u') kaof:
dictDemo.dodati({'Grad':'Bejing', 'Zemlja':'Kina'})
json.istovariti(dictDemo,f)
Izlaz : dict.json
[{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
{'Grad':'Bejing', 'Zemlja':'Kina'}
]
Redci 1 do 13 : Uvozimo JSON modul. Zatim stvaramo popis dict objekata za demo. Zatim smo imenu JSON datoteke dodijelili varijabilni naziv datoteke.
Redci 15 do 17 : Mi koristimo izraz 'with' za otvaranje JSON datoteke za pisanje, a zatim koristimo metodu json.dump za pretvaranje dict objekata u JSON i zatim upis u datoteku.
Redci 20 do 22: Ove su linije vrlo važne jer što će se dogoditi? Ako pokušamo dodati nove JSON objekte u već napisane datoteke. Prethodni podaci bit će izgubljeni zbog prepisivanja. Tada možemo upotrijebiti prethodni naziv popisa dict kao što smo to učinili (dictDemo), a zatim dodajemo novi objekt u to. I na kraju, cijelu datoteku pretvaramo u JSON i prepisujemo cijelu datoteku.
U ispisu možemo vidjeti da je novi JSON objekt dodan na postojeći JSON popis.
Metoda 3: Spremite objekte rječnika u datoteku u txt obliku
Rječnik također možemo spremiti u normalan format niza u datoteku. Dakle, donja metoda je vrlo jednostavan način za spremanje objekata rječnika u datoteku u tekstualnom obliku. Ali ovaj kôd neće raditi ako želimo datoteci dodati novi objekt rječnika jer će prebrisati prethodno napisane podatke. Dakle, za to ćemo vidjeti u sljedećem kodu.
Primjer: dict_to_txt.py
#dict_to_txt.pydictDemo= [
{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
]
naziv datoteke= 'dict.txt'
# Zapisivanje popisa dict objekata u datoteku
s otvorena(naziv datoteke,načinu rada='u') kaof:
f.pisati(str(dictDemo))
Izlaz: dict.txt
[{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7}]
Redci 1 do 11 : Napravili smo popis objekata rječnika i dodijelili naziv datoteke dict.txt promjenjivom imenu datoteke.
Redci 14 do 15 : Ovdje koristimo izraz ‘with’ koji automatski obrađuje iznimku. Zapisujemo popis objekata dict kao niz u datoteku.
Primjer: dict_to_txt_2.py
Vidjeli smo kako spremiti dict objekte u datoteku u .txt obliku. No u gornjem kodu postoji jedan problem s dodavanjem novog objekta. Dakle, mijenjamo metodu dodavanja iz 'w' u 'a', što može riješiti naš problem kao što je dolje prikazano u kodu.
#dict_to_txt_2.py'' ': cvar
Ovaj će kod spremiti dict objekte u datoteku s
način dodavanja.
'' '
dictDemo= [
{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
]
naziv datoteke= 'dict_to_file_appendMode.txt'
# Zapisivanje popisa dict objekata u datoteku
s otvorena(naziv datoteke,načinu rada='do') kaof:
f.pisati(str(dictDemo))
Redci 7 do 15 : Napravili smo popis objekata rječnika i dodijelili naziv datoteke dict_to_file_appendMode.txt varijabilnom imenu datoteke.
Redci 18 do 19 : Mijenjamo način rada = ‘a’ i to će riješiti naš problem. Donji ispis pokazuje da smo dodali dva dict objekta u istu datoteku bez prepisivanja prethodnih podataka.
Izlaz: dict_to_file_appendMode.txt
[{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7}]
[{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7}]
Metoda 4: Spremite dict objekt u datoteku pomoću metode pickle.
Također možemo spremiti dict objekt u datoteku pomoću python modula za biranje. Modul pickle podržava mnoge objekte za serializaciju u pythonu, a podržava i dict objekte.
# dict_to_file_use_pickle.pyuvoz turšija
dictDemo= [
{'Grad':'New York', 'Zemlja':'USES', 'Rang':3},
{'Grad':'Sydney', 'Zemlja':'Australija', 'Rang':5},
{'Grad':'Dubai', 'Zemlja':'UAE', 'Rang':10},
{'Grad':'Mumbai', 'Zemlja':'Indija', 'Rang':17},
{'Grad':'Bejing', 'Zemlja':'Kina', 'Rang':7},
]
naziv datoteke= 'picklefile.pkl'
s otvorena(naziv datoteke, 'daleko') kaof:
turšija.istovariti(dictDemo,f)
Redci 3 do 13 : Uvozimo modul pickle i stvaramo popis dict objekata. Također stvaramo naziv datoteke u koju ćemo spremati naše dict objekte.
Redci 15 do 16 : Ovdje koristimo izraz 'with' i otvaranje datoteke s načinom dodavanja i binarnim formatom. Zatim izbacujemo dict objekte u datoteku.
Zaključak
Dakle, vidjeli smo različite metode spremanja objekta rječnika u datoteku. O korisniku ovisi kako želi spremiti objekt u datoteku. Najčešći načini spremanja dict objekta u datoteku su JSON i CSV. Formati JSON i CSV vrlo su poznati sa programskog gledišta ili su laki za rukovanje u pythonu. Također smo vidjeli način dodavanja spremanja datoteka.
Kôd za ovaj članak možete preuzeti sa ove veze:
https://github.com/shekharpandey89/save-dict-dict-object-to-a-file