Articles

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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *