Filhåndtering i Python

Hvis du ser på bakgrunnen på skrivebordet ditt, hva merker du? Filer spredt overalt, ikke sant? Jeg vet at vi regelmessig faller inn i denne dårlige vana med å ha et rotete skrivebord, men poenget her er at vi ser ut til å håndtere filer mye.

Snakker om Python, det er sikkert mulig å jobbe med filer som bruker Python, og dette er hva jeg skal vise deg i denne opplæringen.

Åpne en fil

Den første naturlige prosessen vi må utføre for å kunne utføre en operasjon på en fil er å åpen den. Gå videre og last ned Text.txt, som er filen vi skal bruke til å utføre våre eksperimenter.

For å åpne filen ved hjelp av Python, bruker vi funksjonen åpen (). Som nevnt i dokumentasjonen:

åpen () returnerer et filobjekt, og brukes mest med to argumenter: Åpne (filnavn, modus)

Før du tar et eksempel, som nevnt ovenfor, åpen() funksjonen vil ta to argumenter: filnavn og modus. Denne måten å sette på argumenter ligner faktisk stdios (dvs. C) fopen ()Filnavn er bare navnet på filen du vil åpne. Du kan også gi banen til den filen hvis den ikke er i din nåværende katalog. Og modus er en strengverdi som indikerer hvordan filen skal åpnes. Eksempler på forskjellige moduser er vist i følgende tabell:

Modus Beskrivelse
r Åpne tekstfil for lesing. Strømmen er plassert i begynnelsen av filen
r+ Åpent for lesing og skriving. Strømmen er plassert i begynnelsen av filen
w Avkort til null lengde eller opprett tekstfil for skriving. Strømmen er plassert i begynnelsen av filen
w+ Åpent for lesing og skriving. Filen er opprettet hvis den ikke eksisterer, ellers blir den avkortet. Strømmen er plassert i begynnelsen av filen
en Åpent for skriving. Filen er opprettet hvis den ikke eksisterer. Strømmen er plassert på slutten av filen. Senere skriver til filen vil alltid ende opp i den nåværende enden av filen
en+ Åpent for lesing og skriving. Filen er opprettet hvis den ikke eksisterer. Strømmen er plassert på slutten av filen. Senere skriver til filen vil alltid ende opp i den nåværende enden av filen

Du kan også se andre moduser i Python-dokumentasjonen.

La oss gå videre og åpne filen Text.txt. Dette kan enkelt gjøres i en linje som følger:

text_file = open ('Text.txt')

Som du kan se her, angav vi ikke modus. Å vite standardmodusen som brukes med åpen(), type skriv ut tekst_fil, I så fall vil du få følgende:


Så, som du kan se, er standardmodusen r. På dette punktet kan du ikke merke noe som skjer, men åpningen av filen er oppnådd i dette trinnet.

Leser en fil

Filen er som en hemmelig boks. Vi har åpnet den i forrige trinn, og nå vil vi se hva som er inni. Å lese en fil er enkel i Python og kan oppnås ved hjelp av lese() metode, som følger:

text_file.read ()

For å se utgangen fra forrige setning, skriv inn skriv ut tekst_file.read (). I dette tilfellet vil hemmeligheten (innholdet) bli avslørt!

Jeg nyter å lære om "filhåndtering" i Python

Gå videre, og skriv inn skriv ut tekst_file.read () igjen, og hva merker du? Du kan se at en tømme strengen har blitt utført. Dette skyldes at du allerede har lest hele filen, i motsetning til å lese en linje om gangen, dvs.. readline ().

Skriver til en fil

Kanskje du vil legge til (skriv) en annen setning eller et avsnitt til filen vi allerede har lest. Si at du ønsket å legge til følgende setning: og jeg leter etter mer. Dette kan gjøres i Python ved hjelp av skrive() metode, som følger:

text_file.write ('og jeg ser etter mer')

Ups, vi fikk en feil her:

Traceback (siste samtalen sist): File "test.py", linje 2, i  text_file.write ('og jeg ser etter mer') IOError: Filen er ikke åpen for skriving

Fikk du poenget ennå? Husk da vi åpnet filen i første del som følger: åpen ( 'text.txt')? Siden vi ikke angav en modus I dette eksemplet ble modusen (standard) satt til r. Dette vil tillate oss bare å lese filen, og i dette eksempelet prøver vi å skrive til filen. Så, la oss åpne filen igjen, men med skrivingen w modus:

text_file = open ('Text.txt', 'w')

Prøv nå å skrive setningen igjen ved hjelp av koden ovenfor. Hva fikk du? la oss åpen() og skrive ut lese() filen som vist i de to første seksjonene for å se hva som er inne i filen:

text_file = open ('Text.txt', 'r') print text_file.read ()

Utgangen av dette skriptet er:

og jeg leter etter mer

Du forventer å se denne nye setningen ledsaget av den opprinnelige setningen Jeg nyter å lære om "filhåndtering" i Python, var du ikke? Så hvor forsvant den til? De w modus synes å overskrive innholdet i filen den skriver til. Hvis du er interessert i å beholde den opprinnelige teksten i dokumentet, kan du bruke en (legg til) modus:

text_file = open ('Text.txt', 'a') text_file.write ('og jeg leter etter mer')

I dette tilfellet bør du få det forventede innholdet i text.txt:

Jeg nyter å lære om "filhåndtering" i Python og jeg leter etter mer

La oss sette alt vi har lært så langt sammen:

med åpne ('Text.txt', 'r +') som text_file: skriv ut 'Filinnholdet FØR du skriver innhold:' skriv ut text_file.read () text_file.write ('og jeg ser etter mer') fil innhold etter å skrive innhold: 'text_file.seek (0) print text_file.read ()

Vi har noen nye ting her. La meg klargjøre dem raskt. med ... som tillater oss å åpne filen, behandle den og sørge for at den er stengt. søke(), På den annen side kan vi flytte pekeren (dvs. markøren) til en annen del av filen. søke (0), for eksempel betyr at referansepunktet vil være starten på filen.

Gå videre og kjør skriptet, og se hva du får som utgang.

Lukke en fil

Å ha vane med å lukke en fil etter å ha lest eller skrevet, vil gjøre det mulig for deg å frigjøre minne. Ja, Python lukker automatisk filene etter at skriptet er ferdig, men hvis du ikke gjør det på forhånd, vil eventuelle åpne filer okkupert noen plass Python kunne dra nytte av. Å stenge en fil utføres bare ved hjelp av Lukk() metode.

La oss ta dette eksempelet:

text_file = open ('Text.txt', 'a +') skriv ut text_file.read () text_file.write ('og jeg leter etter mer')

Hva vil skje hvis vi lukker filen etter lese()? Det er, text_file.close (). Python vil gi følgende unntak:

Traceback (siste samtale siste): File "test.py", linje 4, i  text_file.write ('og jeg ser etter mer') ValueError: I / O-operasjon på lukket fil

Dermed konkluderer vi at vi kan ikke les fra eller skriv til en lukket fil.

Konklusjon

Det er det for denne opplæringen. Vi har sett hvor enkelt Python gjør det til å fungere med filer gjennom noen grunnleggende operasjoner vi har demonstrert. 

Hvilke andre operasjoner utfører du vanligvis på filer som bruker Python?