Lese Og Skrive Lister til En Fil I Python
Som serialiserte datastrukturer Bruker Python-programmerere intensivt arrays, lister og ordbøker. Lagring av disse datastrukturene krever vedvarende enten en fil eller en database å jobbe med. Denne artikkelen beskriver hvordan du skriver en liste til fil, og hvordan du leser listen tilbake i minnet.
For å skrive data i en fil, og for å lese data fra en fil, Tilbyr Programmeringsspråket Python standardmetodenewrite()
ogread()
for å håndtere en enkelt linje, samtwritelines()
ogreadlines()
for å håndtere Flere linjer. Videre tillater bådepickle
ogjson
modulen klare måter å håndtere serialiserte datasett også.
ved hjelp av lese-Og skrivemetodene
for å håndtere tegn (strenger) fungerer de grunnleggende metodene utmerket. Lagring av en slik listelinje for linje i filen listfile.txt
kan gjøres som følger:
# define list of placesplaces = with open('listfile.txt', 'w') as filehandle: for listitem in places: filehandle.write('%s\n' % listitem)
i linje 6 listitem
forlenges med en linebreak «\n», for det første, og lagres i utdatafilen, for det andre. For å lese hele listen fra fillistenfil.txt tilbake i minnet Denne Python-koden viser deg hvordan det fungerer:
# define an empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: for line in filehandle: # remove linebreak which is the last character of the string currentPlace = line # add item to the list places.append(currentPlace)
Husk at du må fjerne linebreak fra slutten av strengen. I dette tilfellet hjelper Det oss at Python tillater listeoperasjoner pa strenger ogsa. I linje 8 i koden ovenfor er denne fjerningen ganske enkelt gjort som en listeoperasjon på selve strengen, som holder alt annet enn det siste elementet. Dette elementet inneholder tegnet «\n » som representerer linebreak PÅ UNIX / Linux-systemer.
ved hjelp av Writelines Og readlines Metoder
Som nevnt i begynnelsen av denne artikkelen Python inneholder også de to metodene writelines()
og readlines()
å skrive og lese flere linjer i ett trinn, henholdsvis. For å skrive hele listen til en fil på disken Er Python-koden som følger:
# define list of placesplaces_list = with open('listfile.txt', 'w') as filehandle: filehandle.writelines("%s\n" % place for place in places_list)
For å lese hele listen fra en fil på disken Er Python-koden som følger:
# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: filecontents = filehandle.readlines() for line in filecontents: # remove linebreak which is the last character of the string current_place = line # add item to the list places.append(current_place)
oppføringen ovenfor følger en mer tradisjonell tilnærming lånt fra andre programmeringsspråk. For å skrive det på En Mer Pythonisk måte, ta en titt på koden nedenfor:
# define empty listplaces = # open file and read the content in a listwith open('listfile.txt', 'r') as filehandle: places =
etter å ha åpnet filen listfile.txt
i linje 5, gjenopprettes listen helt i linje 6. For det første leses filinnholdet via readlines()
. For det andre, i en for
sløyfe fra hver linje linebreak tegnet er fjernet ved hjelp av rstrip()
metoden. For det tredje legges strengen til listen over steder som et nytt listeelement. I forhold til oppføringen før koden er mye mer kompakt, men kan være vanskeligere å lese for nybegynnere Python programmerere.
bruke pickle Modul
de ulike metodene forklart opp til nå lagre listen på en måte som mennesker kan fortsatt lese den. I tilfelle dette ikke er nødvendig pickle modulen kan bli ganske hendig for deg. Dens dump()
metoden lagrer listen effektivt som en binær datastrøm. For det første, i linje 7 (i koden nedenfor) åpnes utdatafilen listfile.data
for binær skriving («wb»). For det andre, i linje 9
lagres listen i den åpne filen ved hjelp av dump()
– metoden.
# load additional moduleimport pickle# define a list of placesplacesList = with open('listfile.data', 'wb') as filehandle: # store the data as binary data stream pickle.dump(placesList, filehandle)
som neste trinn leser vi listen fra filen som følger. For det første åpnes utdatafilen listfile.data
binær for lesing («rb») i linje 4. For det andre lastes listen over steder fra filen ved hjelp av load()
– metoden.
# load additional moduleimport picklewith open('listfile.data', 'rb') as filehandle: # read the data as binary data stream placesList = pickle.load(filehandle)
de to eksemplene her viser bruken av strenger. Selv ompickle
fungerer med Alle Slags Python-objekter som strenger, tall, selvdefinerte strukturer og alle andre innebygde datastrukturer Python gir.
ved HJELP AV Json-Formatet
det binære dataformatetpickle
bruker er spesifikk For Python. For å forbedre interoperabiliteten mellom ulike programmer JavaScript Object Notation (JSON) gir en lett-å-bruke og lesbar skjema, og dermed ble svært populær.
følgende eksempel viser hvordan du skriver en liste over blandede variabeltyper til en utdatafil ved hjelp av json-modulen. I linje 4 er grunnlisten definert. Etter å ha åpnet utdatafilen for skriving i linje 7, lagrerdump()
– metoden grunnlisten i filen ved HJELP AV json-notasjonen.
import json# define list with valuesbasicList = # open output file for writingwith open('listfile.txt', 'w') as filehandle: json.dump(basicList, filehandle)
Å Lese innholdet i utdatafilen tilbake i minnet er like enkelt som å skrive dataene. Den tilsvarende metoden til dump()
heter load()
, og fungerer som følger:
import json# open output file for readingwith open('listfile.txt', 'r') as filehandle: basicList = json.load(filehandle)
Konklusjon
de forskjellige metodene som vises ovenfor, spenner fra enkle skrive – /lesedata til dumping/lasting av data via binære strømmer ved hjelp av pickle og JSON. Dette forenkler lagring av en liste vedvarende, og lese den tilbake i minnet.
Takk
forfatteren vil gjerne takke Zoleka Hatitongwe for hennes støtte mens du forbereder artikkelen.