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 """ def getTextFile(filename): try: file=open(filename,'r',encoding='utf-8') res=file.read() file.close() return res except: print ('Trouble reading: ',filename) return None def storeTextFile(filename,txt): try: file=open(filename,'w',encoding='utf-8') 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 def getTextFile(filename): file=open(filename,'r',encoding='utf-8') res=file.read() file.close() return res def storeTextFile(filename,txt): file=open(filename,'w',encoding='utf-8') 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 ok and result or error and report """ import sys def getTextFile(filename): try: file=open(filename,'r',encoding='utf-8') 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',encoding='utf-8') 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]))