Tekstitiedostojen käsittely
Tähän asti esitetyt ohjelmat ovat aina lukeneet syötteensä suoraan siitä, mitä käyttäjä on kirjoittanut näppäimistöllä. (Täsmällisesti sanottuna ohjelmat ovat lukeneet syötteensä standardisyöttövirrasta, joka on yleensä yhdistetty näppäimistöön, mutta jonka voi käyttöjärjestelmän puolella määritellä yhdistettäväksi johonkin muuhunkin.) Usein on kuitenkin tarpeen tallentaa ohjelman käsittelemää tietoa ohjelman eri suorituskertojen välillä. Ajatellaan aikaisemmin esitettyä puhelinluettelo-esimerkkiä. Tietokoneella olevasta puhelinluettelo-ohjelmasta ei ole paljonkaan iloa, jos käyttäjän pitää aina ohjelmaa käynnistäessään ensin syöttää sille ystäviensä nimet ja puhelinnumerot ennen kuin puhelinnumeroita voi ruveta kyselemään. Paljon kätevämpää on tällöin katsoa puhelinnumero suoraan jostain muualta.
Jotta puhelinluettelo-ohjelma toimisi järkevästi, täytyy olla jokin tapa, jolla säilytetään käyttäjän aikaisemmalla kerralla syöttämiä puhelinnumeroita niin, että ne ovat ohjelman käytössä sen myöhemmillä suorituskerroilla. Tähän voidaan käyttää tiedostoa. Ohjelma tallentaa sillä tiedossa olevat puhelinnumerot tiedostoon. Kun ohjelma seuraavan kerran käynnistetään, tiedostossa olevat puhelinnumerot luetaan ensin keskusmuistiin ja vasta tämän jälkeen aloitetaan ohjelman muiden toimintojen suoritus.
Tiedostoja on kahdenlaisia, tekstitiedostoja ja binääritiedostoja. Tekstitiedostoon tiedot on tallennettu merkkeinä, binääritiedostoihin taas arvoja kuvaavina tavuina. Esimerkiksi luku 190 tallennetaan tekstitiedostoon niin, että tallennetaan peräkkäin merkit ’1’, ’9’ ja ’0’. Binääritiedostoon taas sama luku tallennetaan niin, että tallennetaan kokonaislukuarvon 190 binääriesitystä vastaavat tavut. Tällä kurssilla tarkastellaan vain tekstitiedostojen käsittelyä. Tekstitiedostojen etuna on se, että niitä voidaan kirjoittaa muutenkin kuin Python-ohjelmilla, esimerkiksi Emacsilla, Notepadilla tai millä tahansa ohjelmalla, joka kirjoittaa puhdasta tekstiä.
Seuraavissa kappaleissa tarkastellaan ensin tiedon lukemista tekstitiedostosta ja sitten sitä, miten ohjelma voi kirjoittaa tietoa tekstitiedostoon.