Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 17 Schnittstelle zum Betriebssystem
  Pfeil 17.1 Funktionen des Betriebssystems – os
    Pfeil 17.1.1 Zugriff auf den eigenen Prozess und andere Prozesse
    Pfeil 17.1.2 Zugriff auf das Dateisystem
  Pfeil 17.2 Umgang mit Pfaden – os.path
  Pfeil 17.3 Zugriff auf die Laufzeitumgebung – sys
    Pfeil 17.3.1 Konstanten
    Pfeil 17.3.2 Exceptions
    Pfeil 17.3.3 Hooks
    Pfeil 17.3.4 Sonstige Funktionen
  Pfeil 17.4 Informationen über das System – platform
    Pfeil 17.4.1 Funktionen
  Pfeil 17.5 Kommandozeilenparameter – optparse
    Pfeil 17.5.1 Taschenrechner – ein einfaches Beispiel
    Pfeil 17.5.2 Weitere Verwendungsmöglichkeiten
  Pfeil 17.6 Kopieren von Instanzen – copy
  Pfeil 17.7 Zugriff auf das Dateisystem – shutil
  Pfeil 17.8 Das Programmende – atexit


Galileo Computing - Zum Seitenanfang

17.2 Umgang mit Pfaden – os.path  topZur vorigen Überschrift

Verschiedene Plattformen – verschiedene Pfadnamenskonventionen. Während beispielsweise Windows-Betriebssysteme bei absoluten Pfadnamen das Laufwerk erwarten, auf das sich der Pfad bezieht, wird unter Unix ein einfacher 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.

Bevor wir mit der Beschreibung der Funktionen dieses Moduls beginnen, möchten wir Sie drauf hinweisen, dass unter Windows nicht alle Funktionen korrekt mit UNC-Pfadnamen [Uniform/Universal Naming Convention (UNC) ist ein Standard, um Ressourcen in einem Netzwerk anzusprechen. ] umgehen können. Nur für splitunc und ismount wird garantiert, dass sie mit solchen Pfaden richtig verfahren können.

os.path.abspath(path)

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 Pfads "." auf das aktuelle Verzeichnis herausgefunden, dass unser Script unter 'Z:\\beispiele\\os' gespeichert ist.

os.path.basename(path)

Gibt den sogenannten Basisnamen des Pfads zurück. Der Basisname eines Pfads 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'

Wichtig
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/lib/compiz/") ''
Im Gegensatz dazu sieht die Ausgabe des gleichnamigen Unix-Kommandos so aus:

$ basename /usr/lib/compiz/ compiz

os.path.commonprefix(list)

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.

os.path.dirname(path)

Gibt den Ordnerpfad zurück, den path enthält:

>>> 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/lib/compiz") 
'/usr/lib' 
>>> os.path.dirname(r"/usr/lib/compiz/") 
'/usr/lib/compiz'
os.path.exists(path)

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

os.path.getatime(path)

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 sie bzw. er nicht vorhanden, führt dies zu einem os.error.

Unix-Zeitstempel sind Ganzzahlen, die die Sekunden seit Beginn der Unix-Epoche, also dem 01.01.1970, angeben.

os.path.getmtime(path)

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.

Unix-Zeitstempel sind Zahlen, die die Sekunden seit Beginn der Unix-Epoche, also dem 01.01.1970 um 00:00 Uhr, angeben.

os.path.getsize(path)

Gibt die Größe der unter path zu findenden Datei in Bytes zurück. Der Rückgabewert ist dabei immer eine long-Instanz.

os.path.isabs(path)

Der Rückgabewert ist True, wenn es sich bei path um eine absolute Pfadangabe handelt, sonst False.

os.path.isfile(path)

Gibt True zurück, wenn path auf eine Datei verweist, sonst False. Die Funktion folgt dabei gegebenenfalls symbolischen Links.

os.path.isdir(path)

Wenn der übergebene Pfad auf einen Ordner verweist, wird True zurückgegeben, ansonsten False.

os.path.islink(path)

Gibt True zurück, wenn unter path ein symbolischer Link zu finden ist, sonst False.

os.path.join(path1[, path2[, …]])

Fügt die übergebenen Pfadangaben zu einem einzigen Pfad zusammen, indem sie verkettet werden:

>>> 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 übergebenen Pfade vor dem absoluten:

>>> os.path.join(r"Das\wird\ignoriert", r"C:\Windows", r"System\ntoskrnl.exe")
'C:\\Windows\\System\\ntoskrnl.exe'
os.path.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.

os.path.realpath(path)

Gibt einen zu path äquivalenten Pfad zurück, der keine Umwege über symbolische Links enthält.

os.path.split(path)

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')

Wichtig
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', '')

os.path.splitdrive(path)

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')
os.path.splitext(path)

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')


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2008
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de