Edellytykset:
Python tarjoaa sisäänrakennettuja toimintoja tiedostojen luomiseen, kirjoittamiseen ja lukemiseen. Pythonissa voidaan käsitellä kahden tyyppisiä tiedostoja, normaaleja tekstitiedostoja ja binääritiedostoja (kirjoitettu binäärikielellä, 0:lla ja 1:llä). Tässä artikkelissa aiomme tutkia lukemista tiedostosta rivi riviltä.
Tapa 1: Lue tiedosto rivi riviltä käyttämällä readlines()
readlines()-komentoa käytetään lukemaan kaikki rivit yhdellä kertaa ja palauttamaan ne sitten jokaisena rivinä merkkijonoelementtinä luettelossa. Tätä toimintoa voidaan käyttää pienille tiedostoille, koska se lukee koko tiedoston sisällön muistiin ja jakaa sen sitten erillisiin riveihin. Voimme iteroida luetteloa ja poistaa rivinvaihdon merkin ' ' strip()-funktiolla.
Esimerkki:
Python 3
# 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()))> |
>
>
Lähtö:
verkkotyyppejä
Line1: Geeks Line2: for Line3: Geeks>
Annetun Python-koodin aikamonimutkaisuus on O(n), missä n on tiedoston rivien kokonaismäärä
Koodin aputilan monimutkaisuus on O(n), missä n on tiedoston rivien kokonaismäärä.
Tapa 2: Lue tiedosto rivi riviltä käyttämällä readline()
readline()-funktio lukee tiedoston rivin ja palauttaa sen merkkijonon muodossa. Se vaatii parametrin n, joka määrittää luettavien tavujen enimmäismäärän. Ei kuitenkaan lue enempää kuin yhtä riviä, vaikka n ylittäisi rivin pituuden. Se on tehokasta luettaessa suurta tiedostoa, koska sen sijaan, että se hakee kaikki tiedot kerralla, se hakee rivi riviltä. readline() palauttaa tiedoston seuraavan rivin, jonka lopussa on rivinvaihtomerkki. Lisäksi, jos tiedoston loppu saavutetaan, se palauttaa tyhjän merkkijonon.
Esimerkki:
VAIHE ASKELTA LÄHESTYMINEN:
yksinkertainen java ohjelma
- Luo luettelo L, jossa on kolme rivinvaihtomerkkejä sisältäviä merkkijonoelementtejä.
- Avaa tiedosto nimeltä myfile.txt kirjoitustilassa ja liitä se muuttujaan file1.
- Kirjoita listan L sisältö tiedostoon tiedostoobjektin file1 writelines()-metodilla.
- Sulje tiedostoobjekti tiedosto1 käyttämällä close()-menetelmää.
- Avaa tiedosto nimeltä myfile.txt lukutilassa ja liitä se muuttujaan file1.
- Alusta muuttujamäärä nollaan.
- Aloita loputon silmukka.
- Kasvata muuttujien määrää yhdellä silmukan jokaisessa iteraatiossa.
- Lue seuraava rivi tiedostoobjektista tiedosto1 käyttämällä readline()-metodia ja määritä se muuttujariville.
- Tarkista, onko rivimuuttuja tyhjä. Jos se on tyhjä, se tarkoittaa, että tiedoston loppu on saavutettu. Pura siinä tapauksessa silmukasta break-lausetta käyttämällä.
- Tulosta countin arvo ja rivin sisältö käyttämällä merkkijonoluokan format()-metodia. Strip()-menetelmää käytetään rivinvaihdon poistamiseen rivin lopusta.
- Sulje tiedostoobjekti tiedosto1 käyttämällä close()-menetelmää.
Python 3
# 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()> |
>
>
Lähtö:
Line1 Geeks Line2 for Line3 Geeks>
Tapa 3: Lue tiedosto rivi riviltä käyttämällä for-silmukkaa
Open()-funktio palauttaa iteroitavan objektin tiedostoa avattaessa. Tämä viimeinen tapa lukea tiedosto rivi riviltä sisältää iteroinnin tiedostoobjektin yli silmukassa. Tehdessämme tätä hyödynnämme sisäänrakennettua Python-toimintoa, jonka avulla voimme iteroida tiedostoobjektia implisiittisesti käyttämällä for-silmukkaa yhdessä iteroitavan objektin kanssa. Tämä lähestymistapa vie vähemmän koodirivejä, mikä on aina paras käytäntö, jota kannattaa seurata.
Esimerkki:
Python 3
# 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()> |
mysql-määrä
>
>
Lähtö:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Tapa 4: Lue tiedosto rivi riviltä käyttämällä silmukan ja luettelon ymmärtämistä
Listan ymmärtäminen koostuu suluista, jotka sisältävät lausekkeen, joka suoritetaan kullekin elementille yhdessä for-silmukan kanssa, joka toistaa jokaisen elementin. Täällä luemme tekstitiedoston ja tulostamme raakatiedot, mukaan lukien uuden rivimerkin, toiseen tuotteeseen, poistamme kaikki uudet rivimerkit luettelosta.
Esimerkki
Python 3
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)> |
>
>
Lähtö:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
Lausunnon kanssa
Yllä olevissa lähestymistavoissa tiedosto on suljettava erikseen joka kerta, kun se avataan. Jos tiedosto unohtuu sulkea, se voi tuoda koodiin useita bugeja, eli monet tiedostojen muutokset eivät tule voimaan ennen kuin tiedosto on suljettu kunnolla. Tämän estämiseksi voidaan käyttää lausuntoa. Pythonin With-lausetta käytetään poikkeusten käsittelyssä, jotta koodista tulee selkeämpi ja paljon luettavampi. Se yksinkertaistaa yleisten resurssien, kuten tiedostovirtojen, hallintaa. Tarkkaile seuraavaa koodiesimerkkiä, kuinka with-lauseen käyttö tekee koodista puhtaamman. Tiedostoa file.close() ei tarvitse kutsua käytettäessä käskyn kanssa. Itse kanssa lausunto varmistaa resurssien asianmukaisen hankinnan ja vapauttamisen.
Esimerkki:
Python 3
täysi lomake
# 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()))> |
>
>
Lähtö:
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>