Näide nimede faili kirjutamisest koos paari väikse lisaga, et täpitähed ka toimiks ja oleks nimed uuel real kõik:
# failinimi - lihtsalt nimi
failinimi = "test.txt"
# suvaline muutuja - null tähistab tõde, kõik muud numbrid valet.
valmis = 0
nimenimekiri = [] # täiesti tühi nimekiri
# kui eemalda järgnevas 'not' ja muuda "valmis" nullist erinevaks
# numbriks, siis töötaks näide ka
while not valmis:
nimi = raw_input("Lisa nimi:")
if nimi != "":
nimenimekiri.append(nimi)
print "Su nimes on "+str(len(nimi))+" tähte"
else :
break # murrab while tsükli jõuga katki
# Avame faili lisamise ("a" - append) režiimis,
# võiks olla ka w - "write" ülekirjutamisrežiimiks
fail = open(failinimi,"a")
# kirjutame ükshaaval nimed faili:
for nimi in nimenimekiri:
# enne nime kirjutamist kodeerime selle UTF-8 kodeeringusse, et täpitähed ka säiliks:
fail.write(nimi.encode('utf-8')+"\n")
fail.close() # Fail tuleb alati sulgeda ka, et ta ikka kindlasti kirjutatud saaks
Samast failist nimede lugemine:
#!/usr/bin/python
# -*- coding: utf-8 -*-
sisu = []
# Kiire faili sisu lugemine
for joon in open("test.txt", "r"):
sisu.append(joon)
for nimi in sisu:
print nimi
Sellest näitest ka muudetud versioon, kus kasutatakse alammeetodit salvestamiseks: link
Põhjalikum failide näide, mis kasutab juba keele järgmise taseme tööriistu:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os.path # Keerulisemateks operatsioonideks tuleb kaasata
# põhjalikemaid lisasid keelevaramust
# os.path - võti failide leidmiseks ja orienteerumiseks kaustadesi
nimi = raw_input("Faili nimi:")
print "Kontrollime kas leiame faili:"
os.path.exists(nimi)
if os.path.isfile(nimi) :
# Kui fail on olemas
print "Fail ", nimi, " on olemas" # Kas test.txt on olemas?
if os.path.isabs(nimi) : # Kas see on absoluutne tee failinimi? Nt "/home/kasutaja/test.txt"
pikktee = nimi
lyhitee = os.path.basename(pikktee)
# Get the type of shortpath:
print "Faili ",shortpath," tüüp on", os.path.splitext(lyhitee)[1]
print "Faili ",nimi," suurus on", os.path.getsize(nimi), " baiti (märki)"
else : print "Faili", nimi ," pole"
if os.path.isdir(nimi) :
print "See on kaust!" # On see fail või kaust?
def tagasitee( arg, kaustanimi, fnimed ):
summa = 0
for fail in fnimed:
if not os.path.isdir(fail) :
summa += os.path.getsize(fail)
arg.append(summa)
arglist = []
# os.path.walk võimaldab kaustasid läbi käia
# et muuta tervet failipuud:
os.path.walk(nimi,tagasitee,arglist)
summa = 0
for vaartus in arglist:
summa += vaartus
print "Kausta ", nimi ," suurus on:" ,summa
else : print "See pole ka kaust!"
EKstreemseim näide tänaseks:
#!/bin/python
# -*- coding: utf-8 -*-
# Keskmine hinne ja "MEIE" hinded:
MEIE = {"Karl":0,"Mati":0,"Raul":0}
KESKMINE = 0
KOKKU = 0
FAILID = ["hinded.txt"]
opilased = 0
# Loe andmed:
for fail in FAILID:
failis = open(fail,"r")
while failis:
joon = failis.readline()
for isik in MEIE:
if joon.find(isik) >= 0 and len(joon.split()[0])==len(isik):
print joon.split()[1]
MEIE[isik] = float( joon.split()[1] )
s = joon.split()
n = len(s)
if n == 0:
break
try:
KOKKU += float( s[ n-1 ] )
except:
pass
opilased += 1
print MEIE
print KOKKU
# Arvutame keskmise
print KOKKU, opilased
KESKMINE = KOKKU / ( opilased * (1.0) )
# Eeldame, et keskmine hinne on C
# Kirjeldame hinnete vahemikud:
C = KESKMINE
Cmaks = C + KESKMINE * .05
Cmin = C - KESKMINE * .05
Bmaks = Cmaks + KESKMINE * .1
Bmin = Cmaks
Amin = Bmaks
Dmaks = Cmin
Dmin = Cmin - KESKMINE * .1
Emaks = Dmin
# Kuvame statistika:
print "Keskmine selle kodutöö kohta:", KESKMINE
print "A vahemik:", ">="+str(Amin)
print "B vahemik:", Bmaks,"-", Bmin
print "C vahemik:", Cmaks,"-", Cmin
print "D vahemik:", Dmaks,"-", Dmin
print "E vahemik:", "<"+str(Emaks)
# Iga MEIE hulka kuuluva kohta:
for isik in MEIE:
if MEIE[isik] >= Amin:
print isik,"(",MEIE[isik],")","sai ilmselt A ülesande eest."
elif Bmaks > MEIE[isik] >= Bmin:
print isik,"(",MEIE[isik],")","sai ilmselt B ülesande eest."
elif Cmaks > MEIE[isik] >= Cmin:
print isik,"(",MEIE[isik],")","sai ilmselt C ülesande eest."
elif Dmaks > MEIE[isik] >= Dmin:
print isik,"(",MEIE[isik],")","sai ilmselt D ülesande eest."
else:
print isik,"(",MEIE[isik],")","sai ilmselt E ülesande eest."
Juurde on tarvis seda faili.
Faili veakontroll (veakontroll.py):
#!/usr/bin/python
# -*- coding: utf-8 -*-
# veakontrolliga failioperatsioon
fnimi = raw_input("Faili nimi:")
try:
fail = open(fnimi, "rb", 0) # null lõpus tähistab puhvrit, siin siis puhvrit pole
try:
print fail.mode
print fail.name
fail.seek(-128, 2) # siin
andmed = fail.read(128)
print andmed
finally:
fail.close()
except IOError:
print "Faili viga!"
pass