logo

Izlasiet failu rindiņu pēc rindas programmā Python

Priekšnosacījumi:

Python nodrošina iebūvētas funkcijas failu izveidei, rakstīšanai un lasīšanai. Ir divu veidu faili, ar kuriem var apstrādāt python, parastie teksta faili un binārie faili (rakstīti binārajā valodā, 0s un 1s). Šajā rakstā mēs pētīsim lasīšanu rindu pa rindiņai no faila.



1. metode: izlasiet failu rindiņu pa rindiņai, izmantojot readlines ()

readlines() tiek izmantots, lai nolasītu visas rindas vienā reizē un pēc tam atgrieztu tās kā katra rinda kā virknes elementu sarakstā. Šo funkciju var izmantot maziem failiem, jo ​​tā nolasa visu faila saturu atmiņā un pēc tam sadala to atsevišķās rindās. Mēs varam atkārtot sarakstu un noņemt jaunās rindas rakstzīmi “ ”, izmantojot funkciju strip().

Piemērs:

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

>

salīdzināms saraksts
>

Izvade:

Line1: Geeks Line2: for Line3: Geeks>

Dotā Python koda laika sarežģītība ir O(n), kur n ir kopējais rindiņu skaits failā

Koda palīgtelpas sarežģītība ir O(n), kur n ir kopējais rindiņu skaits failā.

2. metode: izlasiet failu pa rindiņai, izmantojot readline()

Funkcija readline () nolasa faila rindiņu un atgriež to virknes formā. Tam nepieciešams parametrs n, kas norāda maksimālo nolasāmo baitu skaitu. Tomēr nelasa vairāk par vienu rindiņu, pat ja n pārsniedz rindas garumu. Tas būs efektīvi, lasot lielu failu, jo tā vietā, lai ienestu visus datus vienā reizē, tas tiek ielādēts rindu pēc rindiņas. readline() atgriež nākamo faila rindiņu, kuras beigās ir jaunrindas rakstzīme. Turklāt, ja tiek sasniegts faila beigas, tas atgriezīs tukšu virkni.

Piemērs:

SOLI PA SOLI PIEEJA:

objekts Java
  1. Izveidojiet sarakstu L ar trim virknes elementiem, kas satur jaunas rindiņas rakstzīmes.
  2. Atveriet failu ar nosaukumu myfile.txt rakstīšanas režīmā un piešķiriet to mainīgajam failam1.
  3. Ierakstiet failā saraksta L saturu, izmantojot faila objekta file1 metodi writelines().
  4. Aizveriet faila objekta failu1, izmantojot metodi close().
  5. Atveriet failu ar nosaukumu myfile.txt lasīšanas režīmā un piešķiriet to mainīgajam failam1.
  6. Inicializējiet mainīgo skaitu līdz 0.
  7. Sāciet bezgalīgu cilpu.
  8. Palieliniet mainīgo skaitu par 1 katrā cilpas iterācijā.
  9. Izlasiet nākamo rindiņu no faila objekta fails1, izmantojot metodi readline() un piešķiriet to mainīgā rindai.
  10. Pārbaudiet, vai rindas mainīgais ir tukšs. Ja tas ir tukšs, tas nozīmē, ka ir sasniegts faila beigas. Tādā gadījumā izlauzieties no cilpas, izmantojot pārtraukuma paziņojumu.
  11. Izdrukājiet skaita vērtību un rindas saturu, izmantojot virknes klases metodi format(). Metode strip() tiek izmantota, lai rindas beigās noņemtu jaunas rindiņas rakstzīmi.
  12. Aizveriet faila objekta failu1, izmantojot metodi close().

Python3




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

>

>

Izvade:

Line1 Geeks Line2 for Line3 Geeks>

3. metode: izlasiet failu rindiņu pēc rindas, izmantojot cilpu

Atverot failu, funkcija open() atgriež atkārtojamu objektu. Šis pēdējais veids, kā nolasīt failu pa rindiņai, ietver atkārtošanu pa faila objektu cilpai. To darot, mēs izmantojam iebūvētās Python funkcijas, kas ļauj mums netieši atkārtot faila objektu, izmantojot for cilpu kombinācijā ar iterējamā objekta izmantošanu. Šī pieeja aizņem mazāk koda rindiņu, kas vienmēr ir labākā prakse, kurai ir vērts sekot.

Piemērs:

Python3




virkne java metodēs
# 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()>

>

>

Izvade:

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

4. metode: izlasiet failu pa rindiņai, izmantojot cilpas un saraksta izpratni

Saraksta izpratne sastāv no iekavām, kas satur izteiksmi, kas tiek izpildīta katram elementam kopā ar for cilpu, lai atkārtotu katru elementu. Šeit mēs nolasīsim teksta failu un izdrukāsim neapstrādātos datus, tostarp jauno rindas rakstzīmi citā izvadē, mēs no saraksta noņēmām visas jaunās rindas rakstzīmes.

Piemērs

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

>

>

Izvade:

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

Ar paziņojumu

Iepriekš minētajās pieejās ikreiz, kad fails tiek atvērts, tas ir skaidri jāaizver. Ja aizmirstat aizvērt failu, kodā var tikt ieviestas vairākas kļūdas, t.i., daudzas failu izmaiņas nestājas spēkā, kamēr fails nav pareizi aizvērts. Lai to novērstu, var izmantot paziņojumu. Paziņojums With programmā Python tiek izmantots izņēmumu apstrādei, lai padarītu kodu tīrāku un daudz lasāmāku. Tas vienkāršo kopējo resursu, piemēram, failu straumju, pārvaldību. Ievērojiet tālāk sniegto koda piemēru par to, kā ar priekšraksta with lietošana padara kodu tīrāku. Lietojot kopā ar paziņojumu, fails.close() nav jāizsauc. Pats izraksts nodrošina pareizu resursu iegūšanu un atbrīvošanu.

Piemērs:

Python3


if-else java



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

>

>

Izvade:

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>