Spara en dikt i en fil

Save Dict File



Dictionary är ett mycket känt objekt i python. Och det är en samling nycklar och värden. Nyckeln till dikten måste vara oföränderlig, och den kan vara heltal, float, sträng, men varken en lista eller en dikt i sig kan vara en nyckel. Så ibland måste vi spara diktobjekten i en fil. Så vi kommer att se olika metoder för att spara ett diktobjekt i en fil.

Vi kan skriva ordlistan till en fil i Python på olika sätt som:







  1. Kommaseparerad värdefil (.csv)
  2. Json -fil (.json)
  3. Textfil (.txt)
  4. Pickle -fil (.pkl)

Vi kommer att förklara alla ovanstående metoder.



Metod 1: Spara ordlista i CSV -format

För att spara ordlistan i CSV (kommaseparerade värden) använder vi CSV -modulen. De kommaseparerade värdena för att spara pythondiktningen är den vanligaste och mest kända metoden. De flesta programmerare använder den här metoden bara för att spara dikten till en fil. Att spara ordlistan i en fil som CSV är mycket enkelt eftersom vi måste överföra data som en sträng.



Exempel_1: dict_to_csv.py





# dict_to_csv.py
importera csv

dict_sample= {'namn':'LinuxHint', 'stad':'DEN DÄR', 'utbildning':'Teknik'}

med öppen('data.csv', 'i') somf:
förnyckel-idict_sample.nycklar():
f.skriva('% s,% s n'%(nyckel-,dict_sample[nyckel-]))

Linje 2 : Vi importerar CSV -python -modulen.

Rad 4 : Vi skapade ett exempel på diktdata. Vi ska försöka spara det i form av en CSV -fil.



Rad 6: Vi använder här 'med' -uttalandet för att skriva CSV -filen. 'Med' -uttalandet hanterar undantagshanteringen automatiskt under läsning eller skrivning av en fil. Vi öppnar filen data.csv i skrivläge och tilldelar variabeln f det objektet.

Rad 7 , Vi kör en for loop som extraherar nyckeln, och i nästa rad skriver den nyckeln och key_value till en CSV -fil. Så den här slingan körs tills det finns data.

Utdata: data.csv

namn,LinuxHint
stad,DEN DÄR
utbildning,Teknik

Så ovanstående visar utdatafilen efter att ha skrivit på data.csv.

Nu förstår vi hur vi sparar dikten till en fil i form av CSV. Låt oss försöka med ett annat exempel där vi vill skriva en lista över diktobjekt i CSV -filen.

Exempel_2: dict_to_csv_2.py

# dict_to_csv_2.py

importera csv

csvKolumner= ['Stad', 'Land', 'Rang']
dictDemo= [
{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
]
csvFileName= 'data.csv'
Prova:
med öppen(csvFileName, 'i') somf:
författare= csv.DictWriter(f,fältnamn=csvKolumner)
författare.skrivhuvud()
fördataidictDemo:
författare.writerow(data)
bortsett från IO -fel:
skriva ut('Fick fel')

Rad 3 till 12: Vi importerar python -CSV -modulen och skapar en lista med diktobjekt. Vi har också skapat en lista med kolumnnamn.

Rad 13: Vi tilldelade en variabel CSV -filnamnet.

Rad 15: Vi använder påståendet 'med', och påståendet tilldelade __enter__ -metoden returnerar objektet till variabeln f.

Rad 16 till 19: Efter att ha tilldelat returobjektet till variabeln f, ringde vi till en DictWriter -metod för CSV -modulen och skickade två parametrar (filnamn (f) och kolumnnamn). Då kallar vi en annan metod för skrivhuvud () som kommer att skriva den första raden i CSV -filen, som vanligtvis är fälternamnet. Sedan kör vi en for loop på listan över dict -objekt och skriver en efter en till CSV -filen med metoden writerow ().

Metod 2: Spara dikten i en textfil i JSON -format (lägg till -läge)

Vi kan också spara diktobjekten i form av JSON i en fil. Nedanstående kod kommer att förklara detsamma. Denna kod förklarar också hur vi kan lägga till nya JSON till en befintlig lista över JSON.

Exempel : dict_to_file_asJSON.py

#dict_to_file_asJSON.py

importerajson

dictDemo= [
{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
]

filnamn= 'dict.json'

# Skriva listan över dikteringsobjekt till en fil
med öppen(filnamn,läge='i') somf:
json.dumpa(dictDemo,f)

# Skriva ett nytt dikteringsobjekt till en fil som lägg till och skriv över hela filen
med öppen(filnamn,läge='i') somf:
dictDemo.bifoga({'Stad':'Bejing', 'Land':'Kina'})
json.dumpa(dictDemo,f)

Produktion : dict.json

[{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
{'Stad':'Bejing', 'Land':'Kina'}
]

Linje 1 till 13 : Vi importerar JSON -modulen. Sedan skapar vi en lista med diktobjekt för demoen. Sedan tilldelade vi namnet på JSON -filen till ett variabelt filnamn.

Linje 15 till 17 : Vi använder 'med' -uttalandet för att öppna JSON -filen för att skriva, och sedan använder vi json.dump -metoden för att konvertera diktobjekten till JSON och sedan skriva in i filen.

Linje 20 till 22: Dessa rader är mycket viktiga för vad kommer att hända? Om vi ​​försöker lägga till nya JSON -objekt till de redan skrivna filerna. Tidigare data går förlorade på grund av överskrivningen. Sedan kan vi använda föregående diktlistans namn som vi gjorde (dictDemo), och sedan lägger vi till det nya objektet i det. Och äntligen konverterar vi hela filen till JSON och skriver över hela filen.

I utdata kan vi se att ett nytt JSON -objekt läggs till i en befintlig JSON -lista.

Metod 3: Spara ordboksobjekten till en fil i txtform

Vi kan också spara ordlistan i ett normalt strängformat i filen. Så nedanstående metod är ett mycket enkelt sätt att spara ordboksobjekten i filen i textformen. Men den här koden fungerar inte om vi vill lägga till ett nytt ordboksobjekt i filen eftersom den kommer att skriva över tidigare skrivna data. Så för det kommer vi att se det i nästa kod.

Exempel: dict_to_txt.py

#dict_to_txt.py

dictDemo= [
{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
]

filnamn= 'dict.txt'

# Skriva listan över dikteringsobjekt till en fil
med öppen(filnamn,läge='i') somf:
f.skriva(sid(dictDemo))

Produktion: dict.txt

[{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7}]

Linje 1 till 11 : Vi skapade en lista med ordboksobjekt och tilldelade namnet på filen dict.txt till ett variabelt filnamn.

Linje 14 till 15 : Vi använder här 'med' -uttalandet, som automatiskt hanterar undantaget. Och vi skriver diktobjektlistan som en sträng till en fil.

Exempel: dict_to_txt_2.py

Vi har sett hur man sparar diktobjekten till en fil i .txt -formuläret. Men i koden ovan finns det ett problem med att lägga till ett nytt objekt. Så vi ändrar tilläggsmetoden från 'w' till 'a', vilket kan lösa vårt problem som visas nedan i koden.

#dict_to_txt_2.py

'' ': cvar
Denna kod sparar diktobjekten i filen med
lägg till läge.
'' '

dictDemo= [
{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
]

filnamn= 'dict_to_file_appendMode.txt'

# Skriva listan över dikteringsobjekt till en fil
med öppen(filnamn,läge='till') somf:
f.skriva(sid(dictDemo))

Linje 7 till 15 : Vi skapade en lista med ordboksobjekt och tilldelade namnet på filen dict_to_file_appendMode.txt till ett variabelt filnamn.

Linje 18 till 19 : Vi ändrar läge = ‘a’, och detta kommer att lösa vårt problem. Nedanstående utdata visar att vi har lagt till två diktobjekt i samma fil utan att skriva över tidigare data.

Utmatning: dict_to_file_appendMode.txt

[{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7}]

[{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7}]

Metod 4: Spara diktobjektet till en fil med pickle -metoden.

Vi kan också spara dict -objektet till en fil med hjälp av python pickle -modulen. Pickle -modulen stöder många objekt för serialisering i python och stöder också dict -objekt.

# dict_to_file_use_pickle.py

importera ättikslag

dictDemo= [
{'Stad':'New York', 'Land':'ANVÄNDNINGAR', 'Rang':3},
{'Stad':'Sydney', 'Land':'Australien', 'Rang':5},
{'Stad':'Dubai', 'Land':'UAE', 'Rang':10},
{'Stad':'Mumbai', 'Land':'Indien', 'Rang':17},
{'Stad':'Bejing', 'Land':'Kina', 'Rang':7},
]

filnamn= 'picklefile.pkl'

med öppen(filnamn, 'bort') somf:
ättikslag.dumpa(dictDemo,f)

Linje 3 till 13 : Vi importerar modulens pickle och skapar en lista med dict -objekt. Vi skapar också ett filnamn där vi sparar våra diktobjekt.

Linje 15 till 16 : Vi använder här 'med' -uttalandet och öppnar filen med tilläggsläge och binärt format. Sedan dumpar vi diktobjekten i filen.

Slutsats

Så vi har sett olika metoder för att spara ett ordboksobjekt i en fil. Det beror på användaren hur de vill spara objektet i filen. De vanligaste metoderna för att spara diktobjektet i filen är JSON och CSV. JSON- och CSV -format är mycket kända ur programmeringssynpunkt eller enkla att hantera i python. Vi har också sett läget Lägg till för att spara filer.

Koden för denna artikel kan laddas ner från denna länk:

https://github.com/shekharpandey89/save-dict-object-to-a-file