Rheinwerk Computing < openbook >

 
Inhaltsverzeichnis
1 Einleitung
2 Die Programmiersprache Python
Teil I Einstieg in Python
3 Erste Schritte im interaktiven Modus
4 Der Weg zum ersten Programm
5 Kontrollstrukturen
6 Dateien
7 Das Laufzeitmodell
8 Funktionen, Methoden und Attribute
9 Informationsquellen zu Python
Teil II Datentypen
10 Das Nichts – NoneType
11 Operatoren
12 Numerische Datentypen
13 Sequenzielle Datentypen
14 Zuordnungen
15 Mengen
16 Collections
17 Datum und Zeit
18 Aufzählungstypen – Enum
Teil III Fortgeschrittene Programmiertechniken
19 Funktionen
20 Modularisierung
21 Objektorientierung
22 Ausnahmebehandlung
23 Iteratoren
24 Kontextobjekte
25 Manipulation von Funktionen und Methoden
Teil IV Die Standardbibliothek
26 Mathematik
27 Kryptografie
28 Reguläre Ausdrücke
29 Schnittstelle zu Betriebssystem und Laufzeitumgebung
30 Kommandozeilenparameter
31 Dateisystem
32 Parallele Programmierung
33 Datenspeicherung
34 Netzwerkkommunikation
35 Debugging und Qualitätssicherung
36 Dokumentation
Teil V Weiterführende Themen
37 Anbindung an andere Programmiersprachen
38 Distribution von Python-Projekten
39 Grafische Benutzeroberflächen
40 Python als serverseitige Programmiersprache im WWW – ein Einstieg in Django
41 Wissenschaftliches Rechnen
42 Insiderwissen
43 Von Python 2 nach Python 3
A Anhang
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 464 KB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Python 3 von Johannes Ernesti, Peter Kaiser
Das umfassende Handbuch
Buch: Python 3

Python 3
Pfeil 31 Dateisystem
Pfeil 31.1 Zugriff auf das Dateisystem mit os
Pfeil 31.2 Dateipfade – os.path
Pfeil 31.3 Zugriff auf das Dateisystem – shutil
Pfeil 31.3.1 Verzeichnis- und Dateioperationen
Pfeil 31.3.2 Archivoperationen
Pfeil 31.4 Temporäre Dateien – tempfile
 
Zum Seitenanfang

31.2    Dateipfade – os.path Zur vorigen ÜberschriftZur nächsten Überschrift

Verschiedene Plattformen – verschiedene Pfadnamenskonventionen. Während beispielsweise Windows-Betriebssysteme zu Beginn eines absoluten Pfadnamens das Laufwerk erwarten, auf das sich der Pfad bezieht, wird unter Unix ein Slash vorangestellt. Außerdem unterscheiden sich auch die Trennzeichen für einzelne Ordner innerhalb des Pfadnamens, denn Microsoft hat sich im Gegensatz zur Unix-Welt, in der der Slash üblich ist, für den Backslash entschieden.

Als Programmierer für plattformübergreifende Software stehen Sie nun vor dem Problem, dass Ihre Programme mit diesen verschiedenen Konventionen und auch denen dritter Betriebssysteme zurechtkommen müssen.

Damit dafür keine programmtechnischen Verrenkungen notwendig werden, wurde das Modul os.path entwickelt, mit dem Sie Pfadnamen komfortabel verwenden können.

Sie können das Modul auf zwei verschiedene Arten nutzen:

  • Sie importieren erst os und greifen dann über os.path darauf zu.
  • Sie importieren os.path direkt.

Tabelle 31.4 gibt Ihnen einen Überblick über die wichtigsten Funktionen des Moduls os.path.

Name Beschreibung
abspath(path) Gibt zu einem relativen Pfad den dazugehörigen absoluten und normalisierten Pfad (siehe dazu os.normpath) zurück.
basename(path) Gibt den Basisnamen des Pfades zurück.
commonprefix(list) Gibt den längsten gemeinsamen Basispfad der Pfadliste list zurück.
dirname(path) Gibt den Pfad zu dem Verzeichnis zurück, in dem sich path befindet.
exists(path) Gibt True zurück, wenn der Pfad path im Dateisystem existiert, sonst False.
getatime(path) Gibt den Zeitpunkt des letzten Zugriffs auf path als Unix-Zeitstempel zurück.
getmtime(path) Gibt den Zeitpunkt der letzten Änderung von path als Unix-Zeitstempel zurück.
getsize(path) Gibt die Größe der unter path zu findenden Datei in Bytes zurück. Der Rückgabewert ist dabei immer eine int-Instanz.
isabs(path) Der Rückgabewert ist True, wenn es sich bei path um eine absolute Pfadangabe handelt, sonst False.
isfile(path) Gibt True zurück, wenn path auf eine Datei verweist, sonst False. Die Funktion folgt dabei gegebenenfalls symbolischen Links.
isdir(path) Wenn der übergebene Pfad auf einen Ordner verweist, wird True zurückgegeben, ansonsten False.
islink(path) Gibt True zurück, wenn unter path ein symbolischer Link zu finden ist, sonst False.
join(path1, [path2, …]) Verkettet die übergebenen Pfadbausteine zu einem Gesamtpfad.
normcase(path) Wandelt einen Unix-Pfad in einen Windows-Pfad um.
realpath(path) Gibt einen zu path äquivalenten Pfad zurück, der keine Umwege über symbolische Links enthält.
split(path) Spaltet path in Verzeichnis und Datei auf.
splitdrive(path) Spaltet path in den Laufwerksbuchstaben und Pfad auf dem Laufwerk auf.
splitext(path) Teilt den path in den Pfad zu der Datei und die Dateiendung. Beide Elemente werden in einem Tupel zurückgegeben.

Tabelle 31.4    Die wichtigsten Funktionen des Moduls os.path

abspath(path)

Diese Funktion gibt zu einem relativen Pfad den dazugehörigen absoluten und normalisierten Pfad (siehe dazu os.normpath) zurück. Das folgende Beispiel verdeutlicht die Arbeitsweise:

>>> os.path.abspath(".")
'Z:\\beispiele\\os'

In diesem Fall haben wir mithilfe des relativen Pfades "." auf das aktuelle Verzeichnis herausgefunden, dass unser Skript unter 'Z:\\beispiele\\os' gespeichert ist.

basename(path)

Diese Funktion gibt den sogenannten Basisnamen des Pfades zurück. Der Basisname eines Pfades ist der Teil hinter dem letzten Ordnertrennzeichen, wie zum Beispiel \ oder /. Diese Funktion eignet sich sehr gut, um den Dateinamen aus einem vollständigen Pfad zu extrahieren:

>>> os.path.basename(r"C:\Windows\System32\ntoskrnl.exe")
'ntoskrnl.exe'
[»]  Hinweis

Diese Funktion unterscheidet sich von dem Unix-Kommando basename dadurch, dass sie einen leeren String zurückgibt, wenn der String mit einem Ordnertrennzeichen endet:

>>> os.path.basename(r"/usr/include/")
''

Im Gegensatz dazu sieht die Ausgabe des gleichnamigen Unix-Kommandos so aus:

$ basename /usr/include/
include

commonprefix(list)

Diese Funktion gibt einen möglichst langen String zurück, mit dem alle Elemente der als Parameter übergebenen Pfadliste list beginnen:

>>> os.path.commonprefix([r"C:\Windows\System32\ntoskrnl.exe",
... r"C:\Windows\System\TAPI.dll",
... r"C:\Windows\system32\drivers"])
'C:\\Windows\\'

Es ist aber nicht garantiert, dass der resultierende String auch ein gültiger und existierender Pfad ist, da die Pfade als einfache Strings betrachtet werden.

dirname(path)

Diese Funktion gibt den Ordnerpfad von path zurück:

>>> os.path.dirname(r"C:\Windows\System\TAPI.dll")
'C:\\Windows\\System'

Genau wie bei os.path.basename müssen Sie auch hier das abweichende Verhalten bei Pfaden beachten, die mit einem Ordnertrennzeichen enden:

>>> os.path.dirname(r"/usr/include")
'/usr'
>>> os.path.dirname(r"/usr/include/")
'/usr/include'

exists(path)

Diese Funktion gibt True zurück, wenn der angegebene Pfad auf eine existierende Datei oder ein vorhandenes Verzeichnis verweist, ansonsten False.

getatime(path)

Diese Funktion gibt den Unix-Zeitstempel des letzten Zugriffs auf den übergebenen Pfad zurück. Kann auf die übergebene Datei oder den Ordner nicht zugegriffen werden oder ist dieses Element nicht vorhanden, führt dies zu einem os.error.[ 126 ](Unix-Zeitstempel sind Ganzzahlen, die die Sekunden seit Beginn der Unix-Epoche, also seit dem 01.01.1970 angeben. )

getmtime(path)

Diese Funktion gibt einen Unix-Zeitstempel zurück, der angibt, wann die Datei oder der Ordner unter path zum letzten Mal verändert wurde. Existiert der übergebene Pfad nicht im Dateisystem, wird os.error geworfen.

join(path1, [path2, …])

Diese Funktion fügt die übergebenen Pfadangaben zu einem einzigen Pfad zusammen, indem sie verkettet werden. Dabei wird das übliche Trennzeichen des Betriebssystems verwendet:

>>> os.path.join(r"C:\Windows", r"System\ntoskrnl.exe")
'C:\\Windows\\System\\ntoskrnl.exe'

Wird ein absoluter Pfad als zweites oder späteres Argument übergeben, ignoriert os.path.join alle vorher übergebenen Pfade:

>>> os.path.join(r"Das\wird\ignoriert", r"C:\Windows", r"System\ntoskrnl.exe")
'C:\\Windows\\System\\ntoskrnl.exe'

normcase(path)

Auf Betriebssystemen, die bei Pfaden nicht hinsichtlich Groß- und Kleinschreibung unterscheiden (z. B. Windows), werden alle Großbuchstaben durch ihre kleinen Entsprechungen ersetzt. Außerdem werden unter Windows alle Slashs durch Backslashs ausgetauscht:

>>> os.path.normcase(r"C:\Windows/System32/ntoskrnl.exe")
'c:\\windows\\system32\\ntoskrnl.exe'

Unter Unix wird der übergebene Pfad ohne Änderung zurückgegeben.

split(path)

Diese Funktion teilt den übergebenen Pfad in den Namen des Ordners oder der Datei, die er beschreibt, und den Pfad zu dem direkt übergeordneten Verzeichnis und gibt ein Tupel zurück, das die beiden Teile enthält:

>>> os.path.split(r"C:\Windows\System32\ntoskrnl.exe")
('C:\\Windows\\System32', 'ntoskrnl.exe')
[»]  Hinweis

Wenn der Pfad mit einem Slash oder Backslash endet, ist das zweite Element des Tupels ein leerer String:

>>> os.path.split("/home/revelation/")
('/home/revelation', '')

splitdrive(path)

Diese Funktion teilt den übergebenen Pfad in die Laufwerksangabe und den Rest, sofern die Plattform Laufwerksangaben unterstützt:

>>> os.path.splitdrive(r"C:\Windows/System32/ntoskrnl.exe")
('C:', '\\Windows/System32/ntoskrnl.exe')

Unter Betriebssystemen, die keine Laufwerksbuchstaben unterstützen, ist der erste String des Tupels ein leerer String:

>>> os.path.splitdrive("/usr/share/bin")
('', '/usr/share/bin')

splitext(path)

Diese Funktion teilt den path in den Pfad zu der Datei und die Dateiendung. Beide Elemente werden in einem Tupel zurückgegeben:

>>> os.path.splitext(r"C:\Windows\System32\Notepad.exe")
('C:\\Windows\\System32\\Notepad', '.exe')

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Python 3 Python 3
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Einstieg in Python
Einstieg in Python


Zum Rheinwerk-Shop: Python. Der Grundkurs
Python. Der Grundkurs


Zum Rheinwerk-Shop: Algorithmen mit Python
Algorithmen mit Python


Zum Rheinwerk-Shop: Objektorientierte Programmierung
Objektorientierte Programmierung


Zum Rheinwerk-Shop: Raspberry Pi. Das umfassende Handbuch
Raspberry Pi. Das umfassende Handbuch


Zum Rheinwerk-Shop: Roboter-Autos mit dem Raspberry Pi
Roboter-Autos mit dem Raspberry Pi


Zum Rheinwerk-Shop: Neuronale Netze programmieren mit Python
Neuronale Netze programmieren mit Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2020
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern