Kuues tund

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

Rubriigid: Uncategorized. Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar