logo

Prečítajte si súbor riadok po riadku v Pythone

Predpoklady:

Python poskytuje vstavané funkcie na vytváranie, písanie a čítanie súborov. Existujú dva typy súborov, ktoré možno spracovať v pythone, normálne textové súbory a binárne súbory (napísané v binárnom jazyku, 0s a 1s). V tomto článku budeme študovať čítanie riadok po riadku zo súboru.



Metóda 1: Čítanie súboru riadok po riadku pomocou readlines()

readlines() sa používa na prečítanie všetkých riadkov naraz a potom ich vráti ako každý riadok ako prvok reťazca v zozname. Túto funkciu možno použiť pre malé súbory, pretože načíta celý obsah súboru do pamäte a potom ho rozdelí na samostatné riadky. Môžeme iterovať cez zoznam a odstrániť znak nového riadku „ “ pomocou funkcie strip().

Príklad:

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

>

>

Výkon:

Line1: Geeks Line2: for Line3: Geeks>

Časová zložitosť daného Python kódu je O(n), kde n je celkový počet riadkov v súbore

Pomocná priestorová zložitosť kódu je O(n), kde n je celkový počet riadkov v súbore.

Metóda 2: Čítanie súboru riadok po riadku pomocou readline()

funkcia readline() prečíta riadok súboru a vráti ho vo forme reťazca. Vyžaduje parameter n, ktorý určuje maximálny počet bajtov, ktoré sa budú čítať. Nečíta však viac ako jeden riadok, aj keď n presahuje dĺžku riadku. Bude to efektívne pri čítaní veľkého súboru, pretože namiesto načítania všetkých údajov naraz, načítava riadok po riadku. readline() vráti ďalší riadok súboru, ktorý na konci obsahuje znak nového riadku. Tiež, ak sa dosiahne koniec súboru, vráti prázdny reťazec.

Príklad:

PRÍSTUP KROK ZA KROKOM:

  1. Vytvorte zoznam L s tromi prvkami reťazca obsahujúcimi znaky nového riadku.
  2. Otvorte súbor s názvom myfile.txt v režime zápisu a priraďte ho k premennej file1.
  3. Zapíšte obsah zoznamu L do súboru pomocou metódy writelines() objektu file file1.
  4. Zatvorte objekt súboru file1 pomocou metódy close().
  5. Otvorte súbor s názvom myfile.txt v režime čítania a priraďte ho k premennej file1.
  6. Inicializujte počet premenných na 0.
  7. Začnite nekonečnú slučku.
  8. Zvýšte počet premenných o 1 v každej iterácii cyklu.
  9. Prečítajte si nasledujúci riadok zo súboru objekt file1 pomocou metódy readline() a priraďte ho k riadku premennej.
  10. Skontrolujte, či je premenná riadku prázdna. Ak je prázdny, znamená to, že sa dosiahol koniec súboru. V takom prípade opustite cyklus pomocou príkazu break.
  11. Vytlačte hodnotu count a obsah riadku pomocou metódy format() triedy string. Metóda strip() sa používa na odstránenie znaku nového riadku na konci riadku.
  12. Zatvorte objekt súboru file1 pomocou metódy close().

Python3




double v jave

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

>

>

Výkon:

Line1 Geeks Line2 for Line3 Geeks>

Metóda 3: Čítanie súboru riadok po riadku pomocou slučky for

Iterovateľný objekt vráti funkcia open() pri otváraní súboru. Tento posledný spôsob čítania súboru riadok po riadku zahŕňa iteráciu objektu súboru v slučke. Pritom využívame vstavanú funkciu Pythonu, ktorá nám umožňuje iterovať objekt súboru implicitne pomocou cyklu for v kombinácii s použitím iterovateľného objektu. Tento prístup vyžaduje menej riadkov kódu, čo je vždy najlepší postup hodný nasledovania.

Príklad:

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

>

>

Výkon:

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

Metóda 4: Čítanie súboru riadok po riadku pomocou cyklu for a porozumenia zoznamu

Porozumenie zoznamu pozostáva zo zátvoriek obsahujúcich výraz, ktorý sa vykoná pre každý prvok spolu s cyklom for na iteráciu každého prvku. Tu si prečítame textový súbor a vytlačíme nespracované dáta vrátane znaku nového riadku v inom výstupe, v ktorom sme odstránili všetky znaky nového riadku zo zoznamu.

Príklad

Python3




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

>

>

Výkon:

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

S vyhlásením

Vo vyššie uvedených prístupoch je potrebné, aby bol súbor pri každom otvorení explicitne zatvorený. Ak zabudnete súbor zavrieť, môže to spôsobiť niekoľko chýb v kóde, t. j. mnohé zmeny v súboroch sa prejavia až po správnom zatvorení súboru. Aby ste tomu zabránili, môžete použiť vyhlásenie. Príkaz With v Pythone sa používa pri spracovaní výnimiek, aby bol kód čistejší a oveľa čitateľnejší. Zjednodušuje správu bežných zdrojov, ako sú prúdy súborov. V nasledujúcom príklade kódu si pozrite, ako použitie príkazu with robí kód čistejším. Pri použití s ​​príkazom nie je potrebné volať file.close(). Samotný výpis zabezpečuje správne získanie a uvoľnenie zdrojov.

Príklad:

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

>

>

Výkon:

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>