255
9.1
Files
Hier beginnt der Pfad mit der Bezeichnung eines Datenträgers. Meist handelt es sich dabei
um die Festplatte
c:. Anstelle des Slash-Symbols wird ein Backslash \ zur Trennung der Ver-
zeichnisnamen verwendet.
In einem Python-Skript sollte man anstelle der Windows-Schreibweise möglichst die Unix-
Schreibweise für absolute Pfade verwenden. Sie funktioniert auch auf Windows-Rechnern,
sofern sich die Datei auf dem gleichen Datenträger (z.B. Festplatte
c:) befindet wie der
Python-Interpreter.
9.1.5 Laden einer Zeichenkette aus einer Datei
Um einen Text von einer Datei zu laden, muss eine Datei im Lesemodus (mode-Argument
'r') geöffnet werden. Das Beispielskript liest den Inhalt der README-Datei des Python-
Pakets und gibt ihn auf dem Bildschirm aus.
Skript:
Erläuterung:
Bei Zugriffen auf Dateien verwendet man in der Praxis meistens
try-Anweisungen, um
Laufzeitfehler (z.B. wenn Datei nicht existiert) abzufangen. In der
try-Klausel finden fol-
gende Operationen statt:
#1: Die Datei mit dem Pfad /Python35/README.txt wird zum Lesen geöffnet (Modus r).
Ein neues File-Objekt mit dem Namen
daten wird generiert und mit der externen Datei ver-
knüpft. Der Pfad wird hier im Unix-Stil angegeben und entspricht z.B. einer Pfadbezeich-
nung
c:\Python35\README.txt unter Windows.
#2: Durch Aufruf der Methode read() wird der komplette Inhalt der Datei gelesen und als
Zeichenkette der Variablen
text zugewiesen.
#3: Die Datei wird mit close() geschlossen, aber nicht gespeichert, da sie ja nur zum Lesen
geöffnet war.
9.1.6 Absolute und relative Pfade
Dateien sind in einer Hierarchie von Verzeichnissen und Unterverzeichnissen abgespei-
chert, die man als Verzeichnisbaum bezeichnet. Abbildung 9.3 zeigt einen winzig kleinen
Ausschnitt aus einem Verzeichnisbaum eines Windows-Rechners. Bei der Erzeugung eines
File-Objektes mit der Standardfunktion
file() kann ein absoluter oder relativer Pfad ange-
c:\projekt\daten\daten.txt
# Laden eines Textes
try:
daten = open('/Python35/README.txt','r') #1
t e x t = d a t en. r e ad( ) #2
d a t e n.c l ose( ) #3
print(text)
except:
print('Kann Datei nicht öffnen.')
Kapitel 9
Ein- und Ausgabe
256
geben werden. Der absolute Pfad ist ein String, der den Weg im Verzeichnisbaum von der
Wurzel bis zur Datei beschreibt. In den Beispielen zum Speichern und Laden von Texten in
den vorigen Abschnitten haben wir absolute Pfade verwendet, z.B.:
/Python35/README.txt (Unix-Stil)
c:\Python35\README.txt (Windows-Stil)
Ein absoluter Pfad beginnt in der Unix-Schreibweise mit einem Slash und in der Windows-
Schreibweise mit einer Laufwerk-Bezeichnung.
Abb. 9.3: Ausschnitt aus einem Verzeichnisbaum unter Windows
Abb. 9.4: Darstellung des Verzeichnisbaumes (Ausschnitt) im Windows-Explorer
c:\
Wurzel des
Verzeichnisbaumes auf
Festplatte c:
Python-Programme\
Python35\
...
DLLs\ Doc\ include\ ...
Unterverzeichnisse im
Verzeichnis c:\Python35\
Python352.chm
...
257
9.1
Files
Verwendung relativer Pfade
Ein relativer Pfad beschreibt den »Weg« von dem Verzeichnis mit dem Python-Skript zur
Daten-Datei. Ein relativer Pfad besteht entweder allein aus einem Dateinamen oder beginnt
mit dem Namen eines Unterverzeichnisses. Gehen wir verschiedene typische Fälle durch:
1. Beispiel: Im folgenden Skript wird eine Datei im gleichen Verzeichnis abgespeichert, in
dem sich auch das Skript befindet:
2. Beispiel: In folgender Anweisung wird die Datei in einem Unterverzeichnis des Verzeich-
nisses abgespeichert, in dem sich das Skript befindet:
3. Beispiel: Ein absoluter Pfad, der bei der Wurzel des Verzeichnisbaumes beginnt, kann
durch einen relativen Pfad »simuliert« werden. Der relative Pfad
entspricht dem folgenden absoluten Pfad:
Dabei bezeichnet der String
../ in einem relativen Pfad ../dir1/ das Elternverzeichnis des
Verzeichnisses
dir1/. Mit ../ steigt man also in der Verzeichnishierarchie nach oben. Die
Konkatenation ausreichend vieler
../ führt dann unweigerlich zur Wurzel des Verzeichnis-
baumes. Dabei ist es nicht störend, wenn man zu viele Strings
../ aneinanderhängt.
Abb. 9.5: Veranschaulichung eines relativen Pfades durch Pfeile
daten = open('daten.txt', 'w')
daten.write('Wichtige Daten!')
daten.close()
daten = open('daten/daten.txt', 'w')
../../../../projekt/daten/daten.txt
/projekt/daten/daten.txt
/
Wurzel des
Verzeichnisbaumes
projekt/ python/
Relativer Pfad:
../../projekt/daten/daten.txt
filetest.py
daten/
daten.txt
Verzeichnis mit Python-Skript
../
projekt/
daten/
../
skripte/

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.