Python read / write files
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])