Failist lugemine

Faili sisu on võimalik lugeda mitmel viisil.

  • file.read(n) loeb failist hulga n suuruses tähti, kui n on tühi, siis loeb terve faili.

  • file.readline(n) loeb failist tekstirea, kuid sealt mitte rohkem kui n märki.

  • file.readlines(n) loeb failist n tekstirida.

Oletame, et meie test.txt faili sisu näeb välja selline:

Tere.

Mina olen fail.

with open("test.txt","r") as f: # Opens file with name of "test.txt"
    # Reads one character of the file.
    print(f.read(1)) # -> T

    # Reads the whole file.
    print(f.read()) # -> ere.\n Mina olen fail.

Kuna Python on laisk, siis ei hakka programm tekstifaili uuesti algusest lugema, vaid liigub sealt edasi, kus tal pooleli jäi. Kõigepealt lasime programmil lugeda tekstifailist ühe „T“ tähe ning järgmisena tahtsime, et ta loeks terve faili. Kuna „T“ täht oli juba ära loetud, siis alustas programm lugemist „e“ tähest.

Kuna nüüd teame, et failisisu loetakse sealt, kus lugemine pooleli jäi, siis saame katsetada ka faili lugemist ridade kaupa.

with open("test.txt","r") as f: # Opens file with name of "test.txt"
    # Reads an entire line from the text file.
    print(f.readline()) # -> Tere.

    # Reads an entire line from the text file.
    print(f.readline()) # -> Mina olen fail.

Teadsime, et meie failis oli kaks rida teksti ning seepärast saime readline() käsku välja kutsuda kaks korda. Kui meil on tegemist suurema tekstifailiga, siis saame luua tsükli, mis loeb automaatselt faili kõik read eraldi.

Hoiatus

readline() meetod tagastab ka reavahetuse (\n). Printides näiteks tekib seepärast topelt reavahetus.

with open("test.txt","r") as f: # Opens file with name of "test.txt"

    for line in f: # Loops over the file object and reads each line.
        print(line)

Lihtsa listi saamiseks, mis sisaldab kõiki tekstifaili ridu, kasutatakse readlines() käsku.

with open("test.txt","r") as f: # Opens file with name of "test.txt"

    print(f.readlines()) # -> ["Tere.\n", "Mina olen fail."]

Hoiatus

readlines() meetod tagastab elemendi lõpus ka reavahetuse (\n).