Tiedostojen käsittely

Takaisin pääsivulle

Tiedosto

Tiedoston avulla ohjelma voi muistaa tietoa ohjelman suorituskertojen välillä.

Tiedoston tekeminen

Seuraava ohjelma kirjoittaa tiedostoon kolme riviä tekstiä:

def main():
    tiedosto = open("testi.txt", "w")
    tiedosto.write("Ensimmäinen rivi\n")
    tiedosto.write("Toinen rivi\n")
    tiedosto.write("Kolmas rivi\n")
    tiedosto.close()

main()

Ohjelman tuloksena syntyy tiedosto testi.txt:

Ensimmäinen rivi
Toinen rivi
Kolmas rivi

Tiedostosta lukeminen

Seuraava ohjelma lukee ja tulostaa kolme riviä tiedostosta:

# -*- coding: utf-8 -*-

def main():
    tiedosto = open("testi.txt", "r")
    eka = tiedosto.readline()
    toka = tiedosto.readline()
    kolmas = tiedosto.readline()
    
    print eka
    print toka
    print kolmas
    
    tiedosto.close()

main()

Ohjelman tulostus on seuraava:

Ensimmäinen rivi

Toinen rivi

Kolmas rivi

Joka rivin perässä on kaksi rivinvaihtoa, koska riveissä on valmiiksi yksi rivinvaihto ja print-komento saa aikaan vielä toisen.

"Ylimääräisen" rivinvaihdon saa pois komennon strip avulla:

# -*- coding: utf-8 -*-

def main():
    tiedosto = open("testi.txt", "r")
    eka = tiedosto.readline()
    toka = tiedosto.readline()
    kolmas = tiedosto.readline()

    print eka.strip()
    print toka.strip()
    print kolmas.strip()

    tiedosto.close()

main()

Nyt ohjelman tulostus on seuraava:

Ensimmäinen rivi
Toinen rivi
Kolmas rivi

Esimerkki: Nimen muistaminen

Seuraava ohjelma tallentaa käyttäjän nimen tiedostoon nimi.txt. Jos tiedostoa ei ole olemassa, ohjelma kysyy käyttäjältä nimeä ja tallentaa sen tiedostoon. Jos tiedosto on olemassa, ohjelma tulostaa käyttäjän nimen suoraan.

# -*- coding: utf-8 -*-
import os

def main():
    if os.path.exists("nimi.txt"):
        tiedosto = open("nimi.txt", "r")
        nimi = tiedosto.readline()
        tiedosto.close()
        print "Nimesi on " + nimi
    else:
        print "Anna nimesi: "
        nimi = raw_input()
        tiedosto = open("nimi.txt", "w")
        tiedosto.write(nimi)
        tiedosto.close()
        print "Kiitos!"

main()

Ohjelman ensimmäinen suorituskerta:

Anna nimesi: Pekka
Kiitos!

Ohjelman toinen suorituskerta:

Nimesi on Pekka

Tiedoston nimi.txt sisältö:

Pekka

Takaisin pääsivulle