261
9.2
Mehr Zuverlässigkeit durch try- und with-Anweisungen
In Zeile #1 wird das aktuelle Objekt i in einen String umgewandelt und ein Zeilenende-Zei-
chen
\n angefügt. Im folgenden Dialog testen wir die Prozedur:
Es hat funktioniert. Auf den ersten Blick scheint das ein brauchbares Verfahren zu sein,
Daten abzuspeichern. Aber es gibt ein Problem.
Ihre Daten sind als Strings gespeichert worden. Um von einem File geladene Daten weiter-
verarbeiten zu können, müssen sie wieder in den ursprünglichen Datentyp gebracht werden.
Dazu müsste man sich zu jedem als String gespeicherten Objekt auch den ursprünglichen
Typ merken. Soll
123.2 eine Gleitkommazahl oder eine Zeichenkette darstellen? Wie man
mit Python beliebige Objekte auf elegante Weise speichern und laden kann, erfahren Sie in
Abschnitt 9.3. Nun geht es erst einmal um Sicherheitsfragen.
9.2 Mehr Zuverlässigkeit durch try- und with-Anweisungen
Ein Problem bei der Programmierung mit Dateien ist, dass Sie zum Zeitpunkt der Programm-
entwicklung niemals sicher sein können, ob auf die spezifizierte Datei auf dem Peripherie-
speicher zugegriffen werden kann oder nicht. Vielleicht ist der Pfad, der in einem Aufruf der
open()-Funktion angegeben wird, nicht gültig. Dann gibt es einen Laufzeitfehler. In
Abschnitt 5.7 haben Sie gelernt, wie man mit einer
try...except-Anweisung einen sol-
chen Laufzeitfehler abfangen kann:
>>> def speichern(s, dateiname):
t r y :
datei = open(dateiname, 'w')
f or i i n s:
datei.write(str(i)+'\n') #1
datei.close()
except:
print('Speichern nicht möglich')
>>> liste = ['Gold', 123.2, -17]
>>> speichern(liste, '/projekt/daten/gold.txt')
>>> f = open('/projekt/daten/gold.txt', 'r')
>>> daten = f.read()
>>> print(daten)
Gold
123.2
-17
>>> daten
'Gold\n123.2\n-17\n'

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.