logo

Læs en fil linje for linje i Python

Forudsætninger:

Python giver indbyggede funktioner til at oprette, skrive og læse filer. Der er to typer filer, der kan håndteres i python, normale tekstfiler og binære filer (skrevet på binært sprog, 0'er og 1'er). I denne artikel skal vi studere læsning linje for linje fra en fil.



Metode 1: Læs en fil linje for linje ved hjælp af readlines()

readlines() bruges til at læse alle linjerne på én gang og derefter returnere dem som hver linje et strengelement i en liste. Denne funktion kan bruges til små filer, da den læser hele filindholdet til hukommelsen og derefter opdeler det i separate linjer. Vi kan iterere over listen og fjerne nylinjetegnet ' ' ved hjælp af strip()-funktionen.

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()))>

>

>

Produktion:

Line1: Geeks Line2: for Line3: Geeks>

Tidskompleksiteten af ​​den givne Python-kode er O(n), hvor n er det samlede antal linjer i filen

Kodens hjælperumskompleksitet er O(n), hvor n er det samlede antal linjer i filen.

Metode 2: Læs en fil linje for linje ved hjælp af readline()

readline()-funktionen læser en linje i filen og returnerer den i form af strengen. Det tager en parameter n, som angiver det maksimale antal bytes, der vil blive læst. Læser dog ikke mere end én linje, selvom n overstiger linjens længde. Det vil være effektivt, når du læser en stor fil, fordi i stedet for at hente alle data på én gang, henter den linje for linje. readline() returnerer den næste linje i filen, som til sidst indeholder et nylinjetegn. Hvis slutningen af ​​filen nås, vil den også returnere en tom streng.

Eksempel:

TRIN FOR TRIN TILGANG:

  1. Opret en liste L med tre strengelementer, der indeholder nye linjetegn.
  2. Åbn en fil med navnet myfile.txt i skrivetilstand og tildel den til variablen fil1.
  3. Skriv indholdet af listen L til filen ved at bruge metoden writelines() i filobjektet fil1.
  4. Luk filobjektet fil1 ved hjælp af close() metoden.
  5. Åbn filen med navnet myfile.txt i læsetilstand og tildel den til variablen fil1.
  6. Initialiser et variabelantal til 0.
  7. Start en uendelig løkke.
  8. Forøg det variable antal med 1 i hver iteration af sløjfen.
  9. Læs den næste linje fra filobjektet fil1 ved hjælp af readline()-metoden og tildel den til den variable linje.
  10. Tjek om linjevariablen er tom. Hvis den er tom, betyder det, at slutningen af ​​filen er nået. I så fald skal du bryde ud af løkken ved hjælp af break-sætningen.
  11. Udskriv værdien af ​​count og indholdet af linjen ved hjælp af format()-metoden for strengklassen. Strip()-metoden bruges til at fjerne newline-tegnet i slutningen af ​​linjen.
  12. Luk filobjektet fil1 ved hjælp af 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()>

>

>

Produktion:

Line1 Geeks Line2 for Line3 Geeks>

Metode 3: Læs en fil linje for linje ved hjælp af for loop

Et iterbart objekt returneres af funktionen open() under åbning af en fil. Denne sidste måde at læse en fil på linje for linje inkluderer iteration over et filobjekt i en loop. Ved at gøre dette drager vi fordel af en indbygget Python-funktion, der giver os mulighed for at iterere over filobjektet implicit ved hjælp af en for-løkke i kombination med at bruge det iterable objekt. Denne tilgang kræver færre linjer kode, hvilket altid er den bedste praksis, der er værd at følge.

Eksempel:

binær til bcd

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()>

>

>

Produktion:

Using for loop Line1: Geeks Line2: for Line3: Geeks>

Metode 4: Læs en fil linje for linje ved hjælp af sløjfe- og listeforståelse

En listeforståelse består af parenteser, der indeholder udtrykket, som udføres for hvert element sammen med for-løkken for at iterere over hvert element. Her vil vi læse tekstfilen og udskrive rådataene inklusive det nye linjetegn i et andet output, vi fjernede alle de nye linjetegn fra listen.

Eksempel

Python3


cast en streng til int java



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)>

>

>

Produktion:

['Geeks
', 'For
', 'Geeks'] ['Geeks', 'For', 'Geeks']>

Med udsagn

I ovenstående tilgange er det nødvendigt, at hver gang filen åbnes, skal den lukkes eksplicit. Hvis man glemmer at lukke filen, kan det introducere flere fejl i koden, dvs. mange ændringer i filer træder ikke i kraft før filen er ordentligt lukket. For at forhindre dette med statement kan bruges. With-sætningen i Python bruges i undtagelseshåndtering for at gøre koden renere og meget mere læsbar. Det forenkler styringen af ​​fælles ressourcer som filstrømme. Bemærk følgende kodeeksempel om, hvordan brugen af ​​with statement gør koden renere. Der er ingen grund til at kalde file.close(), når du bruger sætningen. Selve med erklæringen sikrer korrekt anskaffelse og frigivelse af ressourcer.

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()))>

>

>

Produktion:

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>