413
14.2
Das Modul os – die Schnittstelle zum Betriebssystem
Den aufgelisteten Namen kann man nicht ansehen, ob sie eine Datei oder ein Unterver-
zeichnis bezeichnen. Dies kann mithilfe der Testfunktionen
os.path.isfile() und
os.path.isdir() geklärt werden, die sich im Untermodul os.path befinden. Beispiel:
Das aktuelle Arbeitsverzeichnis kann geändert werden. Wenn ein Skript häufig auf Files
zugreift, die sich alle in einem bestimmten Verzeichnis befinden, erspart die gezielte Wahl
eines Arbeitsverzeichnisses (AV) lange Pfadangaben beim Aufruf der Funktion
open().
14.2.2 Hintergrund: Zugriffsrechte abfragen und ändern
(Windows und Unix)
Unter Unix sind für jede Datei und jedes Verzeichnis Zugriffsrechte definiert. Unix-Sys-
teme unterscheiden zwischen drei Personengruppen:
Besitzer der Datei bzw. des Verzeichnisses (owner); das ist die Person, die die Datei bzw.
das Verzeichnis angelegt hat.
Mitglieder der Gruppe, zu der der Besitzer gehört (group)
Andere Benutzer des Systems (others)
Jeder dieser Personengruppen wird eine Kombination folgender Zugriffsrechte zugewiesen:
Lesen (read): Datei oder Verzeichnis zum Lesen öffnen
Schreiben (write): Datei ändern oder löschen, in einem Verzeichnis Dateien abspeichern
Ausführen (execute): Programmdatei ausführen
>>> os.listdir('/python35')
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt',
'python.exe', 'python3.dll', 'python35.dll', 'pythonw.exe',
'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']
>>> os.path.isfile('/python35/README.txt')
True
>>> os.path.isdir('/python35/README.txt')
False
>>> os.chdir('/python/projekt/') # neues AV
>>> os.listdir(os.getcwd()) # Inhalt des neuen AV
['daten.txt']
>>> f = open('daten.txt', 'r') # Dateiname reicht als Pfad
Funktion Erklärung
access(path, mode)
Prüft die Zugriffsrechte oder die Existenz einer Datei (nur Unix
und Windows).
chmod (path, mode)
Zugriffsrechte ändern
Tabelle 14.3: Funktionen des Moduls os, die mit Zugriffrechten zu tun haben
Kapitel 14
Systemfunktionen
414
Die Zugriffsrechte können durch eine dreistellige Oktalzahl codiert werden, die sich durch
Addition von neun Zahlen ergibt. Jede Zahl repräsentiert ein Zugriffsrecht für eine be-
stimmte Personengruppe:
Mit der Funktion
chmod() im Modus os können Sie die Zugriffrechte für eine Datei oder
ein Verzeichnis ändern. Aufrufformat:
Dabei bezeichnet das erste Argument
path den Pfad und mode die numerische Repräsenta-
tion der gewünschten Zugriffsrechte als Oktalzahl. Beachten Sie, dass bei Python eine
Oktalzahl mit dem Präfix
0o beginnt (Zahl null und Buchstabe o). Beispiele:
Im Verzeichnis
/projekt/daten gilt Lese-, Schreib- und Ausführungsrecht für alle.
r die Datei
/projekt/daten/daten.txt hat allein der Besitzer Leserecht und die ande-
ren keinerlei Zugriffsrechte.
Mit der Funktion
access() können Zugriffsrechte abgefragt werden. Format:
Dabei bezeichnet das erste Argument einen Pfad. Das zweite Argument
mode enthält einen
logischen Ausdruck (mit den Operatoren
and, or und not), der aus Konstanten der Tabelle
14.5 zusammengesetzt ist. Die Funktion gibt
True zurück, falls für die angegebene Datei
(oder das Verzeichnis) der im zweiten Argument spezifizierte Test positiv ausfällt, und sonst
False. Zu beachten ist, dass die Test-Konstanten Namen des Moduls os sind. Falls das
Modul mittels
import os importiert worden ist, muss den Konstantennamen noch der
Modulname
os vorangestellt werden.
Zahl Zugriffsrecht Personengruppe
400
Lesen Besitzer (owner)
200
Schreiben Besitzer (owner)
100
Ausführen Besitzer (owner)
40
Lesen Gruppe (group)
20
Schreiben Gruppe (group)
10
Ausführen Gruppe (group)
4
Lesen andere (others)
2
Schreiben andere (others)
1
Ausführen andere (others)
Tabelle 14.4: Numerische Codierung von Zugriffsrechten bei Unix
chmod (path, mode)
>>> os.chmod("/projekt/daten", 0o777)
>>> os.chmod("/projekt/daten/daten.txt", 0o400)
access(path, mode)

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.