Im folgenden Beispiel (datei_simpel.py) wird in Python eine Datei zum Lesen geöffnet und danach der Inhalt der Datei angezeigt (mit print):
pfad = "." # anpassen!!
dateiname="datei_simpel.py"
datei = pfad+dateiname
in_file = open(datei,"r")
text = in_file.read()
in_file.close()
print(text)
Einige Bemerkungen zu diesem Beispiel:
pfad
wird der Pfad zu deinem Unterverzeichnis angegeben, dein_Verzeichnis_name
musst du natürlich geeignet anpassen. Beachte den Forward-Slash: / dateiname
steht der Dateiname der zu lesenden Datei. datei
enthält die Verbindung aus Pfad und Dateiname, die Python-Funktion open
erwartet als erstes Argument diesen vollständigen Dateinamen! open
den Modus, in dem die betreffende Datei geoffnet werden soll: "r"
: nur Lesen (r: read) "w"
: nur Schreiben (w: write)"a"
: Lesen und Schreiben (a: append=anhängen), an eine existierende Datei wird Inhalt angehängt (=geschrieben); was schon in der Datei steht, bleibt erhalten. open
liefert als Objekt eine Datei zurück, die im obigen Beispiel unter dem Namen in_file
angesprochen werden kann. read()
liest die ganze Datei, und speichert sie in der Variablen text
, statt read()
kann man auch readline()
benutzen. readline()
liefert eine Zeile der Datei zurück, falls die Datei nicht leer ist, sonst ''
(leerer String). in_file
, dann der
Funktionsaufruf read()
: in_file.read()
close
geschlossen: in_file.close()
. Spätere Zugriffe auf in_file
führen zu einer Fehlermeldung, da in_file
nicht mehr einem Dateiobjekt zugeordnet ist, close
löst also diese Verbindung (klar?). write(text)
: sie schreibt den Wert der Variablen text
in eine zuvor mit dem Modus "w"
geöffnete Datei. Beispiel: out_file.write(text)
Eine ungewöhnliche Anwendung ist das Schreiben eines Programmes, im Programm versteht sich. Man nennt das Metaprogrammierung (!). Im folgenden Beispiel (schreib_einfach.py) wird in Python eine Datei zum Schreiben geöffnet, die Folgen sind fatal: gab es zuvor eine Datei gleichen Namens, so ist deren Inhalt danach definitiv WEG!
programm = 'for i in range(7):\n'
programm = programm + ' print( " "*i,"Dieses Programm wurde soeben ins Leben gerufen" )\n'
pfad = "./" # anpassen!!
dateiname="blues77.py"
datei = pfad+dateiname
out_file = open(datei,"w")
out_file.write(programm)
out_file.close()
print( 'Fertig . . . (schreibe_einfach.py)' )
Einige Bemerkungen zu diesem Beispiel:
pfad
wird wieder der Pfad zu deinem Unterverzeichnis angegeben, dein_Verzeichnis_name
musst du geeignet anpassen! Beachte den Forward-Slash: / dateiname
steht der Dateiname des Programms: blues77.py
. datei
enthält die Verbindung aus Pfad und Dateiname, die Python-Funktion open
erwartet als erstes Argument diesen vollständigen Dateinamen! open
den Modus, in dem wir die betreffende Datei öffnen wollen: "w"
für Schreiben (w: write). Ich zitiere: "ACHTUNG: eine existierende Datei wird gnadenlos und ohne Rückmeldung überschrieben!" open
liefert als Objekt eine Datei zurück, die im obigen Beispiel unter dem Namen out_file
angesprochen werden kann. write(programm)
schreibt den in der Variablen programm
gespeicherten Wert -das ist ganz einfach der Text- in die Datei blues77.py
. out_file
, dann der Funktionsaufruf write(programm)
: out_file.write(programm)
out_file.close()
. Damit wird die Verbindung zwischen dem Datei-Objekt out_file
und dem physikalischen Objekt auf der Festplatte gelöst (klar?). programm
: hier steht ein Zweizeiler, in der ersten Zeile die for-Schleife, \n
bewirkt einen Zeilenvorschub. In der zweiten Zeile steht die print
-Anweisung, beachte die Leerzeichen vor der print
-Anweisung, denn in Python musst du einrücken . . . Die Konstruktion programm + 'print . . .'
, bewirkt, dass die beiden Zeilen in der Variablen programm
gespeichert werden. In Python können Strings mit einfachen und mit doppelten Apostroph geschrieben werden, davon machen wir hier Gebrauch, warum? ________________________________________________________________________________________
________________________________________________________________________________________
Im folgenden Beispiel (ausnahme_bsp.py) wird in Python eine Datei zum Anhängen geöffnet, wobei wir mögliche Fehler mit Hilfe der Ausnahmebehandlung abfangen wollen:
text = "# blues77.py, erzeugt durch schreibe_einfach.py\n"
text = text + "# modifiziert durch ausnahme_bsp.py!\n"
pfad = "./" # anpassen!!
dateiname="blues77.py"
datei = pfad+dateiname
try:
out_file = open(datei,"a") # Datei öffnen
except IOError: # EA-Fehler
print( 'Konnte Datei ' + datei + 'nicht öffnen!' )
else:
out_file.write(text) # text in Datei schreiben
out_file.close() # Datei schliessen
print( 'Fertig . . . (ausnahme_bsp.py)' )
Auch zu diesem Beispiel einige Bemerkungen:
text
steht ein Kommentar. pfad, dateiname & datei
haben die gleiche Funktion wie im ersten Beispiel try
kommt der Befehl hin, der schief gehen kann. Beim Öffnen einer Datei kann beispielsweise der Pfad fehlerhaft sein, oder der Name ist falsch geschrieben oder, oder, oder . . . except
-Block steht der betreffende Fehler, es handelt sich um einen Datei-Fehler: IOError
. Danach folgt die Ausnahmebehandlung, das ist hier die print-Anweisung, die auf den entsprechenden Fehler reagiert. else
die Operationen, die wir durchführen, falls das Öffnen der Datei im try
-Block geklappt hat. findest du unter dem Link "Beispiele":
schreibe_Datei
zusammen, die Funktion bekommt als Parameter: den vollständigen Dateinamen (inclusive Pfad!) sowie den zu speichernden Text, Beispiel: schreibe_Datei(datei,text)
. Abspeichern unter "schreiben.py". safety_first
zum sicheren Öffnen (Ausnahmebehandlung!) und Anhängen einer Datei. Erster Parameter: Vollständiger Dateiname, zweiter Parameter: der text
, der angehängt wird, Beispiel: safety_first(datei,text)
→ sp, 2023-07-26