...
Tallentaessa
...
tietoa
...
muuttujiin,
...
tieto
...
on
...
niissä
...
vain
...
niin
...
kauan
...
kuin
...
ohjelma
...
pyörii.
...
Joskus
...
on
...
tarpellista
...
tallentaa
...
tietoja
...
tai
...
ladata
...
niitä
...
jostain
...
pysyvämmästä
...
tietovarastosta.
...
Näinä
...
pysyvämpinä
...
tietovarastoina
...
toimivat
...
tiedostot.
...
Tiedostojen
...
käyttöön
...
Pythonissa
...
on
...
sisäänrakennettu
...
funktio
...
ja
...
muuttuja.
...
Tiedostot avataan funktiolla open;
...
funktio
...
ottaa
...
parametreikseen
...
tiedoston
...
nimen
...
ja
...
avaustavasta
...
kertovan
...
merkkijonon.
...
Tiedostot
...
voi
...
avata
...
joko
...
lukemista
...
"r"
...
tai
...
kirjoittamista
...
"w"
...
varten.
...
Avattaessa
...
lukemista
...
varten,
...
jos
...
tiedostoa
...
ei
...
ole
...
aiheutuu
...
virhe.
...
Avattaessa
...
kirjoitusta
...
varten,
...
jos
...
tiedostoa
...
ei
...
ole,
...
luodaan
...
uusi,
...
mutta
...
tiedoston
...
olessa
...
jo
...
olemassa,
...
vanha
...
pyyhitään
...
pois
...
ja
...
luodaan
...
uusi
...
tilalle.
...
Funktio open palauttaa tiedosto-objektin,
...
jota
...
voi
...
käyttää
...
sen
...
metodien
...
avulla.
...
Tiedoston
...
lukemiseen
...
on
...
käytössä
...
read
...
metodi,
...
joka
...
palauttaa
...
tiedoston
...
sisällön
...
merkkijonona
...
ja
...
kirjoitettaessa
...
vastaavasti
...
write,
...
joka
...
ottaa
...
parametriksi
...
kirjoitettavan
...
merkkijonon.
...
Tiedosto
...
suljetaan
...
metodilla
...
close.
...
Tässä esimerkissä on kaksi ohjelmaa, joista toinen kirjoittaa tiedostoon test_file.txt
...
käyttäjän
...
syöttämän
...
merkkijonon
...
ja
...
toinen
...
lukee
...
sen
...
ja
...
tulostaa
...
sen
...
sisällön
...
näytölle.
...
read.py:
Code Block |
---|
{code} file = open("test_file.txt", "r") print(file.read()) file.close() input("Paina Enter näppäintä lopettaaksesi...") {code} |
write.py:
Code Block |
---|
} file = open("test_file.txt", "w") s = input("Anna tekstiä tiedostoon:\n") file.write(s) file.close() input("Paina Enter näppäintä lopettaaksesi...") {code} |
Tiedoston
...
lukuun
...
ja
...
kirjoitukseen
...
on
...
myös
...
metodit
...
readlines
...
ja
...
writelines.
...
Metodi
...
readlines
...
palauttaa
...
tiedoston
...
sisällön
...
listana,
...
joka
...
sisältää
...
tiedoston
...
rivit
...
mukaan
...
lukien
...
rivin
...
lopettavan
...
rivinvaihto
...
merkin.
...
Vastaavasti
...
writelines
...
kirjoittaa
...
sille
...
parametrina
...
annetun
...
listan
...
sisältämät
...
merkkijonot.
Jos teksti tiedoston joutuu käymään läpi ohjelmassa, siihen voisi käyttää readlines metodia ja käydeä sen palauttama lista läpi for rakenteessa. Metodi readlines kumminkin lataa koko tiedoston kerralla muistiin ja voi sen takia olla ongelmallista isojen tiedostojen kanssa.
Tämä ohjelma käy tiedoston lines.txt, jonka sisältö on peräisin Pythonin manuaaleista rivit läpi kysyttyään käyttäjältä merkkijonoa, jota sitten etsii tiedostosta ja tulostaa tietoa, jos jotain löytyy. Tiedoston lines.txt sisältö voi toki olla jotain muutakin kuin tässä esimerkissä.
lines.txt:
Code Block |
---|
Jos teksti tiedoston joutuu käymään läpi ohjelmassa, siihen voisi käyttää readlines metodia ja käydeä sen palauttama lista läpi for rakenteessa. Metodi readlines kumminkin lataa koko tiedoston kerralla muistiin ja voi sen takia olla ongelmallista isojen tiedostojen kanssa. Tämä ohjelma käy tiedoston lines.txt, jonka sisältö on peräisin Pythonin manuaaleista rivit läpi kysyttyään käyttäjältä merkkijonoa, jota sitten etsii tiedostosta ja tulostaa tietoa, jos jotain löytyy. Tiedoston lines.txt sisältö voi toki olla jotain muutakin kuin tässä esimerkissä. lines.txt: {code} mode is an optional string that specifies the mode in which the file is opened. The available modes are: Character Meaning 'r' open for reading (default) 'w' open for writing, truncating the file first if it exists 'a' open for writing, appending to the end of the file if it exists Several characters can be appended that modify the given mode: 't' text mode (default) 'b' binary mode '+' open for updating (reading and writing) 'U' universal newline mode (for backwards compatibility; should not be used in new code) {code} |
lineread.py
Code Block |
---|
{code} s = input("Anna merkkijono:\n") file = open("lines.txt", "r") L = file.readlines() file.close() line = 0 for i in L: line += 1 if s in i: print("\"%s\" rivillä %s" % (s, line)) input("Paina Enter näppäintä lopettaaksesi...") {code} |
Pythonissa
...
tiedoston
...
rivit
...
voi
...
kumminkin
...
käydä
...
läpi
...
laittamalla
...
tiedosto-objektin
...
kokoelman
...
sijaan
...
for
...
rakenteeseen.
...
Tässä
...
for
...
rakenne
...
käy
...
rivit
...
yksi
...
kerrallaan
...
läpi
...
niinkuin
...
readlines
...
metodin
...
palauttaman
...
listan,
...
mutta
...
tiedostosta
...
ladataan
...
muistiin
...
vain
...
yksi
...
rivi
...
kerrallaan.
Tässä edellinen esimerkin ohjelma toteutettuna jälkimmäisellä tekniikalla.
Code Block |
---|
Tässä edellinen esimerkin ohjelma toteutettuna jälkimmäisellä tekniikalla. {code} s = input("Anna merkkijono:\n") file = open("lines.txt", "r") line = 0 for i in file: line += 1 if s in i: print("\"%s\" rivillä %s" % (s, line)) file.close() input("Paina Enter näppäintä lopettaaksesi...") {code} |
Tiedoston
...
avaus
...
voi
...
ottaa
...
lisämääreeksi
...
merkin
...
't'
...
tai
...
'b'.
...
Ensimmäinen
...
on
...
vakio
...
toiminto;
...
se
...
avaa
...
tiedoston
...
teksimuodossa.
...
Toinen
...
avaa
...
tekstin
...
binääri
...
muodossa.
...
Ero
...
on,
...
että
...
tekstinä
...
avattaessa
...
tiedoston
...
sisältöön
...
tehdään
...
muutoksia,
...
koska
...
eri
...
käyttöjärjestelmissä
...
on
...
mm.
...
erilaiset
...
rivin
...
lopettavat
...
merkit,
...
jotka
...
muutetaan
...
avattaessa
...
Pythonin
...
ymmärtämiksi
...
merkeiksi
...
sekaannusten
...
välttämiseksi.
...
Binääri muodossa avattaessa,
...
vastaavia
...
muutoksia
...
ei
...
tehdä.
...
Tätä
...
avaus
...
tapaa
...
käytetään
...
useimmissa
...
ei-tekstimuotoisissa
...
tiedostoissa,
...
koska
...
esim.
...
rivinvaihtoa
...
vastaavan
...
bittijonon
...
kohdatessaan
...
tiedostoon
...
tehtäisiin
...
muutoksia,
...
jotka
...
saattaisivat
...
vääristää
...
tiedoston
...
sisältöä.
...
Loput tiedoston avaus tavat ja lisämääreet löytyvät Pythonin manuaaleista.