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 = "s:/wspiegel/info/dein_Verzeichnis_name/" # 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: 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 = "s:/wspiegel/info/dein_Verzeichnis_name/" # 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 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 = "s:/wspiegel/info/dein_Verzeichnis_name/" # anpassen!!
dateiname="blues77.py"
datei = pfad+dateiname
try:
out_file = open(datei,"a") # Datei offnen
except IOError: # EA-Fehler
print 'Konnte Datei ' + datei + 'nicht oeffnen!'
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, 2016-12-09