Forutsetninger:
Python har innebygde funksjoner for å lage, skrive og lese filer. Det er to typer filer som kan håndteres i python, vanlige tekstfiler og binære filer (skrevet på binærspråk, 0s og 1s). I denne artikkelen skal vi studere lesing linje for linje fra en fil.
Metode 1: Les en fil linje for linje ved å bruke readlines()
readlines() brukes til å lese alle linjene på en gang og deretter returnere dem som hver linje et strengelement i en liste. Denne funksjonen kan brukes for små filer, siden den leser hele filinnholdet til minnet, og deretter deler det opp i separate linjer. Vi kan iterere over listen og fjerne nylinjetegnet « » ved å bruke strip()-funksjonen.
Eksempel:
Python3
# Python code to> # demonstrate readlines()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Using readlines()> file1>=> open>(>'myfile.txt'>,>'r'>)> Lines>=> file1.readlines()> count>=> 0> # Strips the newline character> for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Produksjon:
Line1: Geeks Line2: for Line3: Geeks>
Tidskompleksiteten til den gitte Python-koden er O(n), der n er det totale antallet linjer i filen
Ekstraromskompleksiteten til koden er O(n), der n er det totale antallet linjer i filen.
Metode 2: Les en fil linje for linje ved å bruke readline()
readline()-funksjonen leser en linje i filen og returnerer den i form av strengen. Det tar en parameter n, som spesifiserer det maksimale antallet byte som vil bli lest. Leser imidlertid ikke mer enn én linje, selv om n overskrider linjens lengde. Det vil være effektivt når du leser en stor fil fordi i stedet for å hente alle dataene på en gang, henter den linje for linje. readline() returnerer neste linje i filen som inneholder et linjeskifttegn til slutt. Dessuten, hvis slutten av filen er nådd, vil den returnere en tom streng.
Eksempel:
STEG FOR STEG TILNÆRMING:
- Lag en liste L med tre strengelementer som inneholder nylinjetegn.
- Åpne en fil med navnet myfile.txt i skrivemodus og tilordne den til variabelen file1.
- Skriv innholdet i listen L til filen ved å bruke writelines()-metoden til filobjektet fil1.
- Lukk filobjektet fil1 ved å bruke close()-metoden.
- Åpne filen med navnet myfile.txt i lesemodus og tilordne den til variabelen file1.
- Initialiser et variabelantall til 0.
- Start en uendelig løkke.
- Øk variabelantallet med 1 i hver iterasjon av sløyfen.
- Les neste linje fra filobjektet fil1 ved å bruke readline()-metoden og tilordne den til variabellinjen.
- Sjekk om linjevariabelen er tom. Hvis den er tom, betyr det at slutten av filen er nådd. I så fall bryter du ut av loopen ved å bruke break-setningen.
- Skriv ut verdien av count og innholdet i linjen ved å bruke format()-metoden til strengklassen. Strip()-metoden brukes til å fjerne nylinjetegnet på slutten av linjen.
- Lukk filobjektet fil1 ved å bruke close()-metoden.
Python3
understreng i java
# Python program to> # demonstrate readline()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to a file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines((L))> file1.close()> # Using readline()> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> while> True>:> >count>+>=> 1> ># Get next line from file> >line>=> file1.readline()> ># if line is empty> ># end of file is reached> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> file1.close()> |
>
>
Produksjon:
Line1 Geeks Line2 for Line3 Geeks>
Metode 3: Les en fil linje for linje med for loop
Et gjentakbart objekt returneres av funksjonen open() mens du åpner en fil. Denne siste måten å lese en fil på linje for linje inkluderer iterering over et filobjekt i en løkke. Ved å gjøre dette drar vi fordel av en innebygd Python-funksjon som lar oss iterere over filobjektet implisitt ved å bruke en for-løkke i kombinasjon med bruk av det iterbare objektet. Denne tilnærmingen krever færre linjer med kode, som alltid er den beste praksisen det er verdt å følge.
Eksempel:
kjernespråk i java
Python3
# Python program to> # demonstrate reading files> # using for loop> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Opening file> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> # Using for loop> print>(>'Using for loop'>)> for> line>in> file1:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Closing files> file1.close()> |
>
>
Produksjon:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Metode 4: Les en fil linje for linje ved å bruke for løkke- og listeforståelse
En listeforståelse består av parenteser som inneholder uttrykket, som utføres for hvert element sammen med for-løkken for å iterere over hvert element. Her vil vi lese tekstfilen og skrive ut rådataene inkludert det nye linjetegnet i en annen utgang, vi fjernet alle de nye linjetegnene fra listen.
Eksempel
Python3
linux merke
with>open>(>'myfile.txt'>) as f:> >lines>=> [line>for> line>in> f]> print>(lines)> # removing the new line characters> with>open>(>'myfile.txt'>) as f:> >lines>=> [line.rstrip()>for> line>in> f]> print>(lines)> |
>
>
Produksjon:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
Med uttalelse
I de ovennevnte tilnærmingene, hver gang filen åpnes, er det nødvendig å lukke den eksplisitt. Hvis man glemmer å lukke filen, kan det introdusere flere feil i koden, dvs. mange endringer i filene trer ikke i kraft før filen er ordentlig lukket. For å forhindre dette med uttalelse kan brukes. With-setningen i Python brukes i unntakshåndtering for å gjøre koden renere og mye mer lesbar. Det forenkler administrasjonen av vanlige ressurser som filstrømmer. Se følgende kodeeksempel på hvordan bruken av with statement gjør koden renere. Det er ikke nødvendig å kalle file.close() når du bruker setningen. Selve med uttalelsen sikrer riktig anskaffelse og frigjøring av ressurser.
Eksempel:
Python3
# Python program to> # demonstrate with> # statement> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as fp:> >fp.writelines(L)> # using readlines()> count>=> 0> print>(>'Using readlines()'>)> with>open>(>'myfile.txt'>) as fp:> >Lines>=> fp.readlines()> >for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using readline()> count>=> 0> print>(>'
Using readline()'>)> with>open>(>'myfile.txt'>) as fp:> >while> True>:> >count>+>=> 1> >line>=> fp.readline()> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using for loop> count>=> 0> print>(>'
Using for loop'>)> with>open>(>'myfile.txt'>) as fp:> >for> line>in> fp:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Produksjon:
Using readlines() Line1: Geeks Line2: for Line3: Geeks Using readline() Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks>