!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

Python
Børre Stenseth
Python >Filer

Python read / write files

Hva
Lesing og skriving av text filer

Du kan kopiere kodeeksemplene inn i moduler og eksperimentere med dem.

Eksempel 1

Enkel module for lesing og skriving av tekst filer. Feil rapporteres ved print. Dette er greitt så lenge vi arbeider med enkle problemer på vår egen maskin.

"""
Simple module for reading and writing txt files
"""
#------------------------
# Read / write text files
def getTextFile(filename):
    try:
        file=open(filename,'r')
        res=file.read()
        file.close()
        return res
    except:
        print 'Trouble reading: '+filename
        return None
    
def storeTextFile(filename,txt):
    try:
        file=open(filename,'w')
        file.write(txt)
        file.close()
    except:
        print 'Trouble writing to: '+filename

# basic testing of this module 
if __name__=="__main__":
    T=getTextFile("mytext.txt")
    if T != None:
        #print T
        storeTextFile("mycopiedtext.txt",T)

Problemet med denne modulen er at den ikke gir noen indikasjon på hva som er feil, og at den kan skape rare situasjoner når den brukes som tjenerskript. Utskriften kan komme noe umotivert in i den strømmen som skrives tilbake.

Eksempel 2

Her bruker vi unntaksinformasjon og vi lar brukerkoden handtere unntakene. Det gis oss kontroll over hva som har skjedd og hvordan vi vil rapporterer det.

"""
Module for reading and writing txt files
Using code must handle exceptions
"""
import sys
#------------------------
# Read / write text files
def getTextFile(filename):
    file=open(filename,'r')
    res=file.read()
    file.close()
    return res
    
def storeTextFile(filename,txt):
    file=open(filename,'w')
    file.write(txt)
    file.close()
    
# basic testing of this module 
if __name__=="__main__":
    T='unread'
    try:
        T=getTextFile("mytext.txt")
        # print T
        try:
            storeTextFile("mycopiedtext.txt",T)
        except:
            res=sys.exc_info()
            print 'Coud not write file because: '+str(res[1])
    except:
        res=sys.exc_info()
        print 'Coud not read file because: '+str(res[1])

Eksempel 3

Her lar vi metodene plukke opp unntak og vi rapporterer med en tuple. Det første elementet er en indikasjon på om ting har gått bra eller dårlig. Dette gjør brukerkoden noe enklere og vi beholder kontrollen over rapprteringen.

"""
Module for reading and writing txt files
Report tuple with result or error indication
"""
import sys
#------------------------
# Read / write text files
def getTextFile(filename):
    try:
        file=open(filename,'r')
        res=file.read()
        file.close()
        return ('ok',res)
    except:
        res=sys.exc_info()
        return('error',res[1])
    
    
def storeTextFile(filename,txt):
    try:
        file=open(filename,'w')
        file.write(txt)
        file.close()
        return('ok','')
    except:
        res=sys.exc_info()
        return('error',res[1])
    
# basic testing of this module 
if __name__=="__main__":
    res1=getTextFile("mytext.txt")
    if res1[0]=='ok':
        #print res1[1]
        res2=storeTextFile("mycopiedtext.txt",res1[1])
        if res2[0]=='error':
            print 'Coud not write file because: '+str(res2[1])
    else:
        print 'Coud not read file because: '+str(res1[1])
Referanser

Alle aktuelle filer fra eksemplene er sitert i teksten

Vedlikehold
B.Stenseth, september 2011
( Velkommen ) Python >Filer ( HTML og XML )