os — Diverse Schnittstellen zum Betriebssystem

Quellcode: Lib/os.py


Dieses Modul bietet eine portierbare Möglichkeit, betriebssystemabhängige Funktionalität zu nutzen. Wenn Sie nur eine Datei lesen oder schreiben möchten, siehe open(), wenn Sie Pfade manipulieren möchten, siehe das Modul os.path, und wenn Sie alle Zeilen in allen Dateien in der Befehlszeile lesen möchten, siehe das Modul fileinput. Zum Erstellen temporärer Dateien und Verzeichnisse siehe das Modul tempfile und für die High-Level-Datei- und Verzeichnisverwaltung siehe das Modul shutil.

Hinweise zur Verfügbarkeit dieser Funktionen

  • Das Design aller integrierten betriebssystemabhängigen Module von Python ist so beschaffen, dass, solange dieselbe Funktionalität verfügbar ist, dieselbe Schnittstelle verwendet wird; zum Beispiel gibt die Funktion os.stat(path) Stat-Informationen über path im selben Format zurück (das zufällig vom POSIX-Interface stammt).

  • Für ein bestimmtes Betriebssystem spezifische Erweiterungen sind ebenfalls über das Modul os verfügbar, aber deren Verwendung ist natürlich eine Bedrohung für die Portabilität.

  • Alle Funktionen, die Pfade oder Dateinamen akzeptieren, akzeptieren sowohl Byte- als auch Zeichenkettenobjekte und ergeben ein Objekt desselben Typs, wenn ein Pfad oder Dateiname zurückgegeben wird.

  • Auf VxWorks werden os.popen, os.fork, os.execv und os.spawn*p* nicht unterstützt.

  • Auf WebAssembly-Plattformen, Android und iOS sind große Teile des Moduls os nicht verfügbar oder verhalten sich anders. APIs, die sich auf Prozesse beziehen (z. B. fork(), execve()) und Ressourcen (z. B. nice()) sind nicht verfügbar. Andere wie getuid() und getpid() werden emuliert oder sind Platzhalter. WebAssembly-Plattformen fehlt auch die Unterstützung für Signale (z. B. kill(), wait()).

Hinweis

Alle Funktionen in diesem Modul lösen OSError (oder Unterklassen davon) aus, wenn ungültige oder unzugängliche Dateinamen und Pfade vorliegen oder andere Argumente, die den korrekten Typ aufweisen, aber vom Betriebssystem nicht akzeptiert werden.

exception os.error

Ein Alias für die integrierte Ausnahme OSError.

os.name

Der Name des importierten betriebssystemabhängigen Moduls. Die folgenden Namen wurden bisher registriert: 'posix', 'nt', 'java'.

Siehe auch

sys.platform hat eine feinere Granularität. os.uname() gibt systemabhängige Versionsinformationen zurück.

Das Modul platform bietet detaillierte Überprüfungen der Systemidentität.

Dateinamen, Befehlszeilenargumente und Umgebungsvariablen

In Python werden Dateinamen, Befehlszeilenargumente und Umgebungsvariablen durch den String-Typ dargestellt. Auf einigen Systemen ist die Dekodierung dieser Strings von und zu Bytes erforderlich, bevor sie an das Betriebssystem übergeben werden. Python verwendet die Dateisystemkodierung und Fehlerbehandlung, um diese Konvertierung durchzuführen (siehe sys.getfilesystemencoding()).

Die Dateisystemkodierung und Fehlerbehandlung werden beim Start von Python durch die Funktion PyConfig_Read() konfiguriert: siehe die Member filesystem_encoding und filesystem_errors von PyConfig.

Geändert in Version 3.1: Auf einigen Systemen kann die Konvertierung unter Verwendung der Dateisystemkodierung fehlschlagen. In diesem Fall verwendet Python die Fehlerbehandlung für „surrogateescape“, was bedeutet, dass nicht dekodierbare Bytes beim Dekodieren durch ein Unicode-Zeichen U+DCxx ersetzt werden, und diese werden beim Kodieren wieder in das ursprüngliche Byte übersetzt.

Die Dateisystemkodierung muss garantieren, dass alle Bytes unter 128 erfolgreich dekodiert werden. Wenn die Dateisystemkodierung diese Garantie nicht bietet, können API-Funktionen UnicodeError auslösen.

Siehe auch die Locale-Kodierung.

Python UTF-8-Modus

Hinzugefügt in Version 3.7: Weitere Details finden Sie in PEP 540.

Der Python UTF-8-Modus ignoriert die Locale-Kodierung und erzwingt die Verwendung der UTF-8-Kodierung

Beachten Sie, dass die Standardstream-Einstellungen im UTF-8-Modus durch PYTHONIOENCODING überschrieben werden können (genauso wie im Standardmodus mit Locale-Bewusstsein).

Als Konsequenz der Änderungen in diesen Low-Level-APIs zeigen auch andere High-Level-APIs unterschiedliche Standardverhalten

  • Befehlszeilenargumente, Umgebungsvariablen und Dateinamen werden mit der UTF-8-Kodierung in Text dekodiert.

  • os.fsdecode() und os.fsencode() verwenden die UTF-8-Kodierung.

  • open(), io.open() und codecs.open() verwenden standardmäßig die UTF-8-Kodierung. Sie verwenden jedoch weiterhin standardmäßig den strengen Fehlerbehandler, so dass der Versuch, eine Binärdatei im Textmodus zu öffnen, wahrscheinlich eine Ausnahme auslöst, anstatt unsinnige Daten zu erzeugen.

Der Python UTF-8-Modus wird aktiviert, wenn das LC_CTYPE-Locale beim Start von Python C oder POSIX ist (siehe Funktion PyConfig_Read()).

Er kann über die Befehlszeilenoption -X utf8 und die Umgebungsvariable PYTHONUTF8 aktiviert oder deaktiviert werden.

Wenn die Umgebungsvariable PYTHONUTF8 gar nicht gesetzt ist, verwendet der Interpreter standardmäßig die aktuellen Locale-Einstellungen, *es sei denn*, das aktuelle Locale ist als Legacy-ASCII-basiertes Locale identifiziert (wie für PYTHONCOERCECLOCALE beschrieben) und die Locale-Koerzion ist entweder deaktiviert oder schlägt fehl. In solchen Legacy-Locales wird der Interpreter standardmäßig den UTF-8-Modus aktivieren, es sei denn, er wird ausdrücklich angewiesen, dies nicht zu tun.

Der Python UTF-8-Modus kann nur beim Start von Python aktiviert werden. Sein Wert kann aus sys.flags.utf8_mode gelesen werden.

Siehe auch UTF-8-Modus unter Windows und die Dateisystemkodierung und Fehlerbehandlung.

Siehe auch

PEP 686

Python 3.15 wird den Python UTF-8-Modus zum Standard machen.

Prozessparameter

Diese Funktionen und Datenelemente liefern Informationen über den aktuellen Prozess und Benutzer und operieren auf ihnen.

os.ctermid()

Gibt den Dateinamen zurück, der dem steuernden Terminal des Prozesses entspricht.

Verfügbarkeit: Unix, nicht WASI.

os.environ

Ein Mapping-Objekt, dessen Schlüssel und Werte Zeichenketten sind, die die Prozessumgebung darstellen. Zum Beispiel ist environ['HOME'] der Pfadname Ihres Home-Verzeichnisses (auf einigen Plattformen) und entspricht getenv("HOME") in C.

Dieses Mapping wird erfasst, wenn das Modul os zum ersten Mal importiert wird, normalerweise beim Start von Python als Teil der Verarbeitung von site.py. Änderungen an der Umgebung, die nach diesem Zeitpunkt vorgenommen werden, spiegeln sich nicht in os.environ wider, außer Änderungen, die durch direkte Modifizierung von os.environ vorgenommen werden.

Dieses Mapping kann sowohl zur Änderung als auch zur Abfrage der Umgebung verwendet werden. putenv() wird automatisch aufgerufen, wenn das Mapping geändert wird.

Unter Unix verwenden Schlüssel und Werte sys.getfilesystemencoding() und die Fehlerbehandlung 'surrogateescape'. Verwenden Sie environb, wenn Sie eine andere Kodierung verwenden möchten.

Unter Windows werden die Schlüssel in Großbuchstaben umgewandelt. Dies gilt auch beim Abrufen, Setzen oder Löschen eines Elements. Zum Beispiel ordnet environ['monty'] = 'python' den Schlüssel 'MONTY' dem Wert 'python' zu.

Hinweis

Das direkte Aufrufen von putenv() ändert os.environ nicht, daher ist es besser, os.environ zu ändern.

Hinweis

Auf einigen Plattformen, einschließlich FreeBSD und macOS, kann das Setzen von environ zu Speicherlecks führen. Beachten Sie die Systemdokumentation für putenv().

Sie können Elemente aus diesem Mapping löschen, um Umgebungsvariablen zu unsetten. unsetenv() wird automatisch aufgerufen, wenn ein Element aus os.environ gelöscht wird und wenn eine der Methoden pop() oder clear() aufgerufen wird.

Siehe auch

Die Funktion os.reload_environ().

Geändert in Version 3.9: Aktualisiert zur Unterstützung der Merge- (|) und Update- (|=) Operatoren von PEP 584.

os.environb

Byte-Version von environ: ein Mapping-Objekt, bei dem sowohl Schlüssel als auch Werte bytes-Objekte sind, die die Prozessumgebung darstellen. environ und environb sind synchronisiert (die Modifizierung von environb aktualisiert environ und umgekehrt).

environb ist nur verfügbar, wenn supports_bytes_environ True ist.

Hinzugefügt in Version 3.2.

Geändert in Version 3.9: Aktualisiert zur Unterstützung der Merge- (|) und Update- (|=) Operatoren von PEP 584.

os.reload_environ()

Die Mappings os.environ und os.environb sind ein Cache von Umgebungsvariablen zum Zeitpunkt des Programmstarts. Daher werden Änderungen an der aktuellen Prozessumgebung, die außerhalb von Python oder durch os.putenv() oder os.unsetenv() vorgenommen werden, nicht reflektiert. Verwenden Sie os.reload_environ(), um os.environ und os.environb mit solchen Änderungen an der aktuellen Prozessumgebung zu aktualisieren.

Warnung

Diese Funktion ist nicht threadsicher. Das Aufrufen während die Umgebung in einem anderen Thread geändert wird, ist ein undefiniertes Verhalten. Das Lesen aus os.environ oder os.environb oder das Aufrufen von os.getenv() während des Neuladens kann ein leeres Ergebnis zurückgeben.

Hinzugefügt in Version 3.14.

os.chdir(path)
os.fchdir(fd)
os.getcwd()

Diese Funktionen werden in Dateien und Verzeichnisse beschrieben.

os.fsencode(filename)

Kodiert das pfadähnliche filename in die Dateisystemkodierung und Fehlerbehandlung; gibt unveränderte bytes zurück.

fsdecode() ist die umgekehrte Funktion.

Hinzugefügt in Version 3.2.

Geändert in Version 3.6: Unterstützung hinzugefügt für Objekte, die die Schnittstelle os.PathLike implementieren.

os.fsdecode(filename)

Dekodiert das pfadähnliche filename aus der Dateisystemkodierung und Fehlerbehandlung; gibt unveränderte str zurück.

fsencode() ist die umgekehrte Funktion.

Hinzugefügt in Version 3.2.

Geändert in Version 3.6: Unterstützung hinzugefügt für Objekte, die die Schnittstelle os.PathLike implementieren.

os.fspath(path)

Gibt die Dateisystemrepräsentation des Pfades zurück.

Wenn str oder bytes übergeben wird, wird sie unverändert zurückgegeben. Andernfalls wird __fspath__() aufgerufen und dessen Wert zurückgegeben, solange es sich um ein str- oder bytes-Objekt handelt. In allen anderen Fällen wird TypeError ausgelöst.

Hinzugefügt in Version 3.6.

class os.PathLike

Eine abstrakte Basisklasse für Objekte, die einen Dateisystempfad darstellen, z. B. pathlib.PurePath.

Hinzugefügt in Version 3.6.

abstractmethod __fspath__()

Gibt die Dateisystempfadrepräsentation des Objekts zurück.

Die Methode sollte nur ein str- oder bytes-Objekt zurückgeben, wobei str bevorzugt wird.

os.getenv(key, default=None)

Gibt den Wert der Umgebungsvariable key als String zurück, falls sie existiert, oder default, falls nicht. key ist ein String. Beachten Sie, dass da getenv() os.environ verwendet, die Abbildung von getenv() ebenfalls beim Import erfasst wird und die Funktion zukünftige Umgebungsänderungen möglicherweise nicht widerspiegelt.

Unter Unix werden Schlüssel und Werte mit sys.getfilesystemencoding() und dem Fehlerbehandler 'surrogateescape' dekodiert. Verwenden Sie os.getenvb(), wenn Sie eine andere Kodierung verwenden möchten.

Verfügbarkeit: Unix, Windows.

os.getenvb(key, default=None)

Gibt den Wert der Umgebungsvariable key als Bytes zurück, falls sie existiert, oder default, falls nicht. key muss Bytes sein. Beachten Sie, dass da getenvb() os.environb verwendet, die Abbildung von getenvb() ebenfalls beim Import erfasst wird und die Funktion zukünftige Umgebungsänderungen möglicherweise nicht widerspiegelt.

getenvb() ist nur verfügbar, wenn supports_bytes_environ True ist.

Hinzugefügt in Version 3.2.

os.get_exec_path(env=None)

Gibt die Liste der Verzeichnisse zurück, die nach einer benannten ausführbaren Datei durchsucht werden, ähnlich einer Shell, beim Starten eines Prozesses. env sollte, wenn angegeben, ein Umgebungsvariablen-Dictionary sein, um den PATH darin nachzuschlagen. Standardmäßig wird, wenn env None ist, environ verwendet.

Hinzugefügt in Version 3.2.

os.getegid()

Gibt die effektive Gruppen-ID des aktuellen Prozesses zurück. Dies entspricht dem "set id"-Bit auf der Datei, die im aktuellen Prozess ausgeführt wird.

Verfügbarkeit: Unix, nicht WASI.

os.geteuid()

Gibt die effektive Benutzer-ID des aktuellen Prozesses zurück.

Verfügbarkeit: Unix, nicht WASI.

os.getgid()

Gibt die reale Gruppen-ID des aktuellen Prozesses zurück.

Verfügbarkeit: Unix.

Die Funktion ist ein Stub unter WASI, siehe WebAssembly-Plattformen für weitere Informationen.

os.getgrouplist(user, group, /)

Gibt eine Liste von Gruppen-IDs zurück, zu denen user gehört. Wenn group nicht in der Liste enthalten ist, wird es hinzugefügt; typischerweise wird group als Gruppen-ID-Feld aus dem Passwort-Datensatz für user angegeben, da diese Gruppen-ID sonst möglicherweise weggelassen wird.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.getgroups()

Gibt eine Liste von sekundären Gruppen-IDs zurück, die mit dem aktuellen Prozess verbunden sind.

Verfügbarkeit: Unix, nicht WASI.

Hinweis

Unter macOS unterscheidet sich das Verhalten von getgroups() etwas von anderen Unix-Plattformen. Wenn der Python-Interpreter mit einem Deployment-Ziel von 10.5 oder früher erstellt wurde, gibt getgroups() die Liste der effektiven Gruppen-IDs zurück, die dem aktuellen Benutzerprozess zugeordnet sind; diese Liste ist auf eine systemdefinierte Anzahl von Einträgen beschränkt, typischerweise 16, und kann durch Aufrufe von setgroups() geändert werden, wenn ausreichende Privilegien vorhanden sind. Wenn mit einem Deployment-Ziel größer als 10.5 erstellt, gibt getgroups() die aktuelle Gruppen-Zugriffsliste für den Benutzer zurück, der der effektiven Benutzer-ID des Prozesses zugeordnet ist; die Gruppen-Zugriffsliste kann sich während der Lebensdauer des Prozesses ändern, wird durch Aufrufe von setgroups() nicht beeinflusst und ihre Länge ist nicht auf 16 begrenzt. Der Wert des Deployment-Ziels, MACOSX_DEPLOYMENT_TARGET, kann mit sysconfig.get_config_var() abgerufen werden.

os.getlogin()

Gibt den Namen des Benutzers zurück, der auf dem steuernden Terminal des Prozesses angemeldet ist. Für die meisten Zwecke ist es nützlicher, getpass.getuser() zu verwenden, da letzteres die Umgebungsvariablen LOGNAME oder USERNAME prüft, um herauszufinden, wer der Benutzer ist, und auf pwd.getpwuid(os.getuid())[0] zurückgreift, um den Login-Namen des aktuellen realen Benutzer-IDs zu erhalten.

Verfügbarkeit: Unix, Windows, nicht WASI.

os.getpgid(pid)

Gibt die Prozessgruppen-ID des Prozesses mit der Prozess-ID pid zurück. Wenn pid 0 ist, wird die Prozessgruppen-ID des aktuellen Prozesses zurückgegeben.

Verfügbarkeit: Unix, nicht WASI.

os.getpgrp()

Gibt die ID der aktuellen Prozessgruppe zurück.

Verfügbarkeit: Unix, nicht WASI.

os.getpid()

Gibt die aktuelle Prozess-ID zurück.

Die Funktion ist ein Stub unter WASI, siehe WebAssembly-Plattformen für weitere Informationen.

os.getppid()

Gibt die Prozess-ID des Elternprozesses zurück. Wenn der Elternprozess beendet wurde, wird unter Unix die ID des Init-Prozesses (1) zurückgegeben, unter Windows ist es immer noch dieselbe ID, die möglicherweise bereits von einem anderen Prozess wiederverwendet wurde.

Verfügbarkeit: Unix, Windows, nicht WASI.

Geändert in Version 3.2: Unterstützung für Windows hinzugefügt.

os.getpriority(which, who)

Holt die Scheduling-Priorität eines Programms. Der Wert which ist einer von PRIO_PROCESS, PRIO_PGRP oder PRIO_USER, und who wird relativ zu which interpretiert (eine Prozess-ID für PRIO_PROCESS, eine Prozessgruppen-ID für PRIO_PGRP und eine Benutzer-ID für PRIO_USER). Ein Nullwert für who bezeichnet (respektive) den aufrufenden Prozess, die Prozessgruppe des aufrufenden Prozesses oder die reale Benutzer-ID des aufrufenden Prozesses.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

Parameter für die Funktionen getpriority() und setpriority().

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.PRIO_DARWIN_THREAD
os.PRIO_DARWIN_PROCESS
os.PRIO_DARWIN_BG
os.PRIO_DARWIN_NONUI

Parameter für die Funktionen getpriority() und setpriority().

Hinzugefügt in Version 3.12.

os.getresuid()

Gibt ein Tupel (ruid, euid, suid) zurück, das die reale, effektive und gespeicherte Benutzer-ID des aktuellen Prozesses angibt.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.2.

os.getresgid()

Gibt ein Tupel (rgid, egid, sgid) zurück, das die reale, effektive und gespeicherte Gruppen-ID des aktuellen Prozesses angibt.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.2.

os.getuid()

Gibt die reale Benutzer-ID des aktuellen Prozesses zurück.

Verfügbarkeit: Unix.

Die Funktion ist ein Stub unter WASI, siehe WebAssembly-Plattformen für weitere Informationen.

os.initgroups(username, gid, /)

Ruft den Systemaufruf initgroups() auf, um die Gruppen-Zugriffsliste mit allen Gruppen zu initialisieren, zu denen der angegebene Benutzername gehört, zuzüglich der angegebenen Gruppen-ID.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

Hinzugefügt in Version 3.2.

os.putenv(key, value, /)

Setzt die Umgebungsvariable namens key auf den String value. Solche Änderungen an der Umgebung wirken sich auf Unterprozesse aus, die mit os.system(), popen() oder fork() und execv() gestartet werden.

Zuweisungen zu Einträgen in os.environ werden automatisch in entsprechende Aufrufe von putenv() übersetzt; Aufrufe von putenv() aktualisieren jedoch nicht os.environ, daher ist es tatsächlich vorzuziehen, Elemente von os.environ zuzuweisen. Dies gilt auch für getenv() und getenvb(), die in ihren Implementierungen jeweils os.environ und os.environb verwenden.

Siehe auch die Funktion os.reload_environ().

Hinweis

Auf einigen Plattformen, einschließlich FreeBSD und macOS, kann das Setzen von environ zu Speicherlecks führen. Beachten Sie die Systemdokumentation für putenv().

Löst ein Auditing-Ereignis os.putenv mit den Argumenten key, value aus.

Geändert in Version 3.9: Die Funktion ist jetzt immer verfügbar.

os.setegid(egid, /)

Setzt die effektive Gruppen-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.seteuid(euid, /)

Setzt die effektive Benutzer-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.setgid(gid, /)

Setzt die Gruppen-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.setgroups(groups, /)

Setzt die Liste der sekundären Gruppen-IDs, die dem aktuellen Prozess zugeordnet sind, auf groups. groups muss eine Sequenz sein, und jedes Element muss eine Ganzzahl sein, die eine Gruppe identifiziert. Diese Operation ist normalerweise nur dem Superuser gestattet.

Verfügbarkeit: Unix, nicht WASI.

Hinweis

Unter macOS darf die Länge von groups die systemdefinierte maximale Anzahl von effektiven Gruppen-IDs, typischerweise 16, nicht überschreiten. Siehe die Dokumentation für getgroups() für Fälle, in denen sie möglicherweise nicht dieselbe Gruppenliste zurückgibt, die durch den Aufruf von setgroups() gesetzt wurde.

os.setns(fd, nstype=0)

Ordnet den aktuellen Thread einer Linux-Namensraum neu zu. Siehe die Manpages setns(2) und namespaces(7) für weitere Details.

Wenn fd auf einen Link /proc/pid/ns/ verweist, ordnet setns() den aufrufenden Thread dem Namensraum neu zu, der mit diesem Link verbunden ist, und nstype kann auf eine der CLONE_NEW*-Konstanten gesetzt werden, um Einschränkungen für den Vorgang festzulegen (0 bedeutet keine Einschränkungen).

Seit Linux 5.8 kann fd auf einen PID-Dateideskriptor verweisen, der von pidfd_open() erhalten wurde. In diesem Fall ordnet setns() den aufrufenden Thread in einen oder mehrere der gleichen Namensräume neu zu wie der durch fd referenzierte Thread. Dies unterliegt allen Einschränkungen, die durch nstype auferlegt werden, einem Bitmaskenwert, der eine oder mehrere der CLONE_NEW*-Konstanten kombiniert, z. B. setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID). Die Mitgliedschaften des Aufrufers in nicht spezifizierten Namensräumen bleiben unverändert.

fd kann jedes Objekt mit einer fileno()-Methode oder ein roher Dateideskriptor sein.

Dieses Beispiel ordnet den Thread dem Netzwerk-Namensraum des init-Prozesses neu zu

fd = os.open("/proc/1/ns/net", os.O_RDONLY)
os.setns(fd, os.CLONE_NEWNET)
os.close(fd)

Verfügbarkeit: Linux >= 3.0 mit glibc >= 2.14.

Hinzugefügt in Version 3.12.

Siehe auch

Die Funktion unshare().

os.setpgrp()

Ruft den Systemaufruf setpgrp() oder setpgrp(0, 0) auf, je nachdem, welche Version implementiert ist (falls vorhanden). Die Semantik entnehmen Sie bitte dem Unix-Handbuch.

Verfügbarkeit: Unix, nicht WASI.

os.setpgid(pid, pgrp, /)

Ruft den Systemaufruf setpgid() auf, um die Prozessgruppen-ID des Prozesses mit der ID pid auf die Prozessgruppe mit der ID pgrp zu setzen. Die Semantik entnehmen Sie bitte dem Unix-Handbuch.

Verfügbarkeit: Unix, nicht WASI.

os.setpriority(which, who, priority)

Setzt die Scheduling-Priorität eines Programms. Der Wert which ist einer von PRIO_PROCESS, PRIO_PGRP oder PRIO_USER, und who wird relativ zu which interpretiert (eine Prozess-ID für PRIO_PROCESS, eine Prozessgruppen-ID für PRIO_PGRP und eine Benutzer-ID für PRIO_USER). Ein Nullwert für who bezeichnet (respektive) den aufrufenden Prozess, die Prozessgruppe des aufrufenden Prozesses oder die reale Benutzer-ID des aufrufenden Prozesses. priority ist ein Wert im Bereich von -20 bis 19. Die Standardpriorität ist 0; niedrigere Prioritäten führen zu einer günstigeren Terminplanung.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.setregid(rgid, egid, /)

Setzt die reale und effektive Gruppen-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.setresgid(rgid, egid, sgid, /)

Setzt die reale, effektive und gespeicherte Gruppen-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

Hinzugefügt in Version 3.2.

os.setresuid(ruid, euid, suid, /)

Setzt die reale, effektive und gespeicherte Benutzer-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

Hinzugefügt in Version 3.2.

os.setreuid(ruid, euid, /)

Setzt die reale und effektive Benutzer-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.getsid(pid, /)

Ruft den Systemaufruf getsid() auf. Die Semantik entnehmen Sie bitte dem Unix-Handbuch.

Verfügbarkeit: Unix, nicht WASI.

os.setsid()

Ruft den Systemaufruf setsid() auf. Die Semantik entnehmen Sie bitte dem Unix-Handbuch.

Verfügbarkeit: Unix, nicht WASI.

os.setuid(uid, /)

Setzt die Benutzer-ID des aktuellen Prozesses.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

os.strerror(code, /)

Gibt die Fehlermeldung zurück, die dem Fehlercode in code entspricht. Auf Plattformen, auf denen strerror() bei einem unbekannten Fehlercode NULL zurückgibt, wird ein ValueError ausgelöst.

os.supports_bytes_environ

True, wenn der native OS-Typ der Umgebung Bytes ist (z. B. False unter Windows).

Hinzugefügt in Version 3.2.

os.umask(mask, /)

Setzt die aktuelle numerische Umask und gibt die vorherige Umask zurück.

Die Funktion ist ein Stub unter WASI, siehe WebAssembly-Plattformen für weitere Informationen.

os.uname()

Gibt Informationen zurück, die das aktuelle Betriebssystem identifizieren. Der Rückgabewert ist ein Objekt mit fünf Attributen

  • sysname - Name des Betriebssystems

  • nodename - Name des Computers im Netzwerk (implementierungsabhängig)

  • release - Betriebssystem-Release

  • version - Betriebssystemversion

  • machine - Hardware-Identifikator

Aus Kompatibilitätsgründen ist dieses Objekt auch iterierbar und verhält sich wie ein Fünfer-Tupel, das sysname, nodename, release, version und machine in dieser Reihenfolge enthält.

Einige Systeme kürzen nodename auf 8 Zeichen oder auf die erste Komponente; ein besserer Weg, den Hostnamen zu erhalten, ist socket.gethostname() oder sogar socket.gethostbyaddr(socket.gethostname()).

Unter macOS, iOS und Android gibt dies den Namen und die Version des *Kernels* zurück (d. h. 'Darwin' unter macOS und iOS; 'Linux' unter Android). platform.uname() kann verwendet werden, um den für den Benutzer sichtbaren Namen und die Version des Betriebssystems unter iOS und Android zu erhalten.

Geändert in Version 3.3: Der Rückgabetyp wurde von einem Tupel in ein tupelähnliches Objekt mit benannten Attributen geändert.

os.unsetenv(key, /)

Löscht (entfernt) die Umgebungsvariable namens key. Solche Änderungen an der Umgebung wirken sich auf Unterprozesse aus, die mit os.system(), popen() oder fork() und execv() gestartet werden.

Löschen von Einträgen in os.environ wird automatisch in einen entsprechenden Aufruf von unsetenv() übersetzt; Aufrufe von unsetenv() aktualisieren jedoch nicht os.environ, daher ist es tatsächlich vorzuziehen, Einträge aus os.environ zu löschen.

Siehe auch die Funktion os.reload_environ().

Löst ein Auditing-Ereignis os.unsetenv mit dem Argument key aus.

Geändert in Version 3.9: Die Funktion ist jetzt immer verfügbar und auch unter Windows verfügbar.

os.unshare(flags)

Teile des Prozess-Ausführungskontextes trennen und in einen neu erstellten Namensraum verschieben. Weitere Details finden Sie in der Manpage unshare(2). Das Argument flags ist eine Bitmaske, die null oder mehr der CLONE_* Konstanten kombiniert und angibt, welche Teile des Ausführungskontextes von ihren bestehenden Zuordnungen getrennt und in einen neuen Namensraum verschoben werden sollen. Wenn das Argument flags 0 ist, werden keine Änderungen am Ausführungskontext des aufrufenden Prozesses vorgenommen.

Verfügbarkeit: Linux >= 2.6.16.

Hinzugefügt in Version 3.12.

Siehe auch

Die Funktion setns().

Flags für die Funktion unshare(), wenn die Implementierung diese unterstützt. Sehen Sie sich die Linux-Manpage unshare(2) für deren genaue Wirkung und Verfügbarkeit an.

os.CLONE_FILES
os.CLONE_FS
os.CLONE_NEWCGROUP
os.CLONE_NEWIPC
os.CLONE_NEWNET
os.CLONE_NEWNS
os.CLONE_NEWPID
os.CLONE_NEWTIME
os.CLONE_NEWUSER
os.CLONE_NEWUTS
os.CLONE_SIGHAND
os.CLONE_SYSVSEM
os.CLONE_THREAD
os.CLONE_VM

Erstellung von Datei-Objekten

Diese Funktionen erstellen neue Datei-Objekte. (Siehe auch open() zum Öffnen von Dateideskriptoren.)

os.fdopen(fd, *args, **kwargs)

Gibt ein offenes Datei-Objekt zurück, das mit dem Dateideskriptor fd verbunden ist. Dies ist ein Alias für die eingebaute Funktion open() und akzeptiert die gleichen Argumente. Der einzige Unterschied ist, dass das erste Argument von fdopen() immer eine Ganzzahl sein muss.

Datei-Deskriptor-Operationen

Diese Funktionen arbeiten mit I/O-Streams, die über Dateideskriptoren referenziert werden.

Dateideskriptoren sind kleine Ganzzahlen, die einer von dem aktuellen Prozess geöffneten Datei entsprechen. Zum Beispiel ist die Standardeingabe normalerweise Dateideskriptor 0, die Standardausgabe 1 und die Standardfehlerausgabe 2. Weitere von einem Prozess geöffnete Dateien erhalten dann 3, 4, 5 und so weiter. Der Name „Dateideskriptor“ ist leicht irreführend; auf Unix-Plattformen werden auch Sockets und Pipes durch Dateideskriptoren referenziert.

Die Methode fileno() kann verwendet werden, um den Dateideskriptor zu erhalten, der mit einem Datei-Objekt verbunden ist, wenn dies erforderlich ist. Beachten Sie, dass die direkte Verwendung des Dateideskriptors die Methoden des Datei-Objekts umgeht und Aspekte wie die interne Pufferung von Daten ignoriert.

os.close(fd)

Schließt den Dateideskriptor fd.

Hinweis

Diese Funktion ist für Low-Level-I/O vorgesehen und muss auf einen Dateideskriptor angewendet werden, der von os.open() oder pipe() zurückgegeben wurde. Um ein „Datei-Objekt“ zu schließen, das von der eingebauten Funktion open() oder von popen() oder fdopen() zurückgegeben wurde, verwenden Sie dessen close()-Methode.

os.closerange(fd_low, fd_high, /)

Schließt alle Dateideskriptoren von fd_low (einschließlich) bis fd_high (ausschließlich), wobei Fehler ignoriert werden. Entspricht (ist aber viel schneller als)

for fd in range(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

Kopiert count Bytes vom Dateideskriptor src, beginnend bei Offset offset_src, zum Dateideskriptor dst, beginnend bei Offset offset_dst. Wenn offset_src None ist, wird von der aktuellen Position in src gelesen; entsprechend für offset_dst.

In Linux-Kerneln, die älter als 5.3 sind, müssen sich die von src und dst referenzierten Dateien im selben Dateisystem befinden, andernfalls wird eine OSError mit errno auf errno.EXDEV gesetzt ausgelöst.

Diese Kopie erfolgt ohne die zusätzlichen Kosten der Datenübertragung vom Kernel in den Benutzerbereich und dann zurück in den Kernel. Zusätzlich können einige Dateisysteme zusätzliche Optimierungen implementieren, wie z. B. die Verwendung von Reflinks (d. h. zwei oder mehr Inodes, die sich Zeiger auf dieselben Copy-on-Write-Festplattenblöcke teilen; unterstützte Dateisysteme sind btrfs und XFS) und serverseitige Kopien (im Fall von NFS).

Die Funktion kopiert Bytes zwischen zwei Dateideskriptoren. Textoptionen wie die Kodierung und der Zeilenumbruch werden ignoriert.

Der Rückgabewert ist die Anzahl der kopierten Bytes. Dies kann weniger sein als die angeforderte Menge.

Hinweis

Unter Linux sollte os.copy_file_range() nicht zum Kopieren eines Bereichs einer Pseudo-Datei aus einem speziellen Dateisystem wie procfs und sysfs verwendet werden. Aufgrund eines bekannten Linux-Kernel-Problems werden immer null Bytes kopiert und 0 zurückgegeben, als ob die Datei leer wäre.

Verfügbarkeit: Linux >= 4.5 mit glibc >= 2.27.

Hinzugefügt in Version 3.8.

os.device_encoding(fd)

Gibt eine Zeichenkette zurück, die die Kodierung des Geräts beschreibt, das mit fd verbunden ist, wenn es mit einem Terminal verbunden ist; andernfalls wird None zurückgegeben.

Unter Unix gibt die Funktion, wenn der Python UTF-8-Modus aktiviert ist, 'UTF-8' anstelle der Geräte-Kodierung zurück.

Geändert in Version 3.10: Unter Unix implementiert die Funktion jetzt den Python UTF-8-Modus.

os.dup(fd, /)

Gibt eine Kopie des Dateideskriptors fd zurück. Der neue Dateideskriptor ist nicht vererbbar.

Unter Windows ist der neue Dateideskriptor, wenn ein Standard-Stream (0: stdin, 1: stdout, 2: stderr) dupliziert wird, vererbbar.

Verfügbarkeit: nicht WASI.

Geändert in Version 3.4: Der neue Dateideskriptor ist jetzt nicht vererbbar.

os.dup2(fd, fd2, inheritable=True)

Dupliziert den Dateideskriptor fd nach fd2 und schließt letzteren bei Bedarf zuerst. Gibt fd2 zurück. Der neue Dateideskriptor ist standardmäßig vererbbar oder nicht vererbbar, wenn inheritable False ist.

Verfügbarkeit: nicht WASI.

Geändert in Version 3.4: Optionaler Parameter inheritable hinzugefügt.

Geändert in Version 3.7: Gibt bei Erfolg fd2 zurück. Zuvor wurde immer None zurückgegeben.

os.fchmod(fd, mode)

Ändert den Modus der Datei, die durch fd angegeben wird, in den numerischen Modus mode. Mögliche Werte für mode finden Sie in der Dokumentation für chmod(). Ab Python 3.3 ist dies äquivalent zu os.chmod(fd, mode).

Löst ein Auditing-Ereignis os.chmod mit den Argumenten path, mode, dir_fd aus.

Verfügbarkeit: Unix, Windows.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Geändert in Version 3.13: Unterstützung für Windows hinzugefügt.

os.fchown(fd, uid, gid)

Ändert die Eigentümer- und Gruppen-ID der durch fd angegebenen Datei in die numerischen uid und gid. Um eine der IDs unverändert zu lassen, setzen Sie sie auf -1. Siehe chown(). Ab Python 3.3 ist dies äquivalent zu os.chown(fd, uid, gid).

Löst ein Auditing-Ereignis os.chown mit den Argumenten path, uid, gid, dir_fd aus.

Verfügbarkeit: Unix.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

os.fdatasync(fd)

Erzwingt das Schreiben der Datei mit dem Dateideskriptor fd auf die Festplatte. Erzwingt nicht die Aktualisierung von Metadaten.

Hinweis

Diese Funktion ist unter MacOS nicht verfügbar.

os.fpathconf(fd, name, /)

Gibt systemkonfigurationsbezogene Informationen für eine geöffnete Datei zurück. name gibt den abzurufenden Konfigurationswert an. Dies kann eine Zeichenkette sein, die den Namen eines definierten Systemwerts darstellt; diese Namen sind in einer Reihe von Standards (POSIX.1, Unix 95, Unix 98 und andere) spezifiziert. Einige Plattformen definieren auch zusätzliche Namen. Die Namen, die dem Host-Betriebssystem bekannt sind, sind im Wörterbuch pathconf_names aufgeführt. Für Konfigurationsvariablen, die nicht in dieser Zuordnung enthalten sind, wird auch die Übergabe einer Ganzzahl für name akzeptiert.

Wenn name eine Zeichenkette ist und nicht bekannt ist, wird ValueError ausgelöst. Wenn ein bestimmter Wert für name vom Hostsystem nicht unterstützt wird, auch wenn er in pathconf_names enthalten ist, wird eine OSError mit errno.EINVAL für die Fehlernummer ausgelöst.

Ab Python 3.3 ist dies äquivalent zu os.pathconf(fd, name).

os.fstat(fd)

Gibt den Status des Dateideskriptors fd zurück. Gibt ein stat_result-Objekt zurück.

Ab Python 3.3 ist dies äquivalent zu os.stat(fd).

Siehe auch

Die Funktion stat().

os.fstatvfs(fd, /)

Gibt Informationen über das Dateisystem zurück, das die Datei mit dem Dateideskriptor fd enthält, ähnlich wie statvfs(). Ab Python 3.3 ist dies äquivalent zu os.statvfs(fd).

os.fsync(fd)

Erzwingt das Schreiben der Datei mit dem Dateideskriptor fd auf die Festplatte. Unter Unix wird die native Funktion fsync() aufgerufen; unter Windows die MS-Funktion _commit().

Wenn Sie mit einem gepufferten Python Datei-Objekt f beginnen, führen Sie zuerst f.flush() aus und dann os.fsync(f.fileno()), um sicherzustellen, dass alle internen Puffer, die mit f verbunden sind, auf die Festplatte geschrieben werden.

Verfügbarkeit: Unix, Windows.

os.ftruncate(fd, length, /)

Schneidet die Datei, die dem Dateideskriptor fd entspricht, auf eine maximale Größe von length Bytes ab. Ab Python 3.3 ist dies äquivalent zu os.truncate(fd, length).

Löst ein Auditing-Ereignis os.truncate mit den Argumenten fd, length aus.

Verfügbarkeit: Unix, Windows.

Geändert in Version 3.5: Unterstützung für Windows hinzugefügt.

os.get_blocking(fd, /)

Gibt den Blockierungsmodus des Dateideskriptors zurück: False, wenn das Flag O_NONBLOCK gesetzt ist, True, wenn das Flag gelöscht ist.

Siehe auch set_blocking() und socket.socket.setblocking().

Verfügbarkeit: Unix, Windows.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Unter Windows ist diese Funktion auf Pipes beschränkt.

Hinzugefügt in Version 3.5.

Geändert in Version 3.12: Unterstützung für Pipes unter Windows hinzugefügt.

os.grantpt(fd, /)

Gewährt Zugriff auf das Slave-Pseudo-Terminal-Gerät, das mit dem Master-Pseudo-Terminal-Gerät verbunden ist, auf das der Dateideskriptor fd verweist. Der Dateideskriptor fd wird bei einem Fehler nicht geschlossen.

Ruft die C-Standardbibliotheksfunktion grantpt() auf.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.13.

os.isatty(fd, /)

Gibt True zurück, wenn der Dateideskriptor fd geöffnet und mit einem TTY-ähnlichen Gerät verbunden ist, andernfalls False.

os.lockf(fd, cmd, len, /)

Anwenden, Testen oder Entfernen eines POSIX-Locks auf einen geöffneten Dateideskriptor. fd ist ein geöffneter Dateideskriptor. cmd gibt den zu verwendenden Befehl an – einer von F_LOCK, F_TLOCK, F_ULOCK oder F_TEST. len gibt den zu sperrenden Abschnitt der Datei an.

Löst ein Auditing-Ereignis os.lockf mit den Argumenten fd, cmd, len aus.

Hinzugefügt in Version 3.3.

os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST

Flags, die angeben, welche Aktion lockf() ausführen wird.

Hinzugefügt in Version 3.3.

os.login_tty(fd, /)

Bereitet das TTY, dessen Dateideskriptor fd ist, für eine neue Anmeldesitzung vor. Macht den aufrufenden Prozess zu einem Session-Leader; macht das TTY zum steuernden TTY, zum stdin, stdout und stderr des aufrufenden Prozesses; schließt fd.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.11.

os.lseek(fd, pos, whence, /)

Setzt die aktuelle Position des Dateideskriptors fd auf die Position pos, modifiziert durch whence, und gibt die neue Position in Bytes relativ zum Anfang der Datei zurück. Gültige Werte für whence sind:

  • SEEK_SET oder 0 – setzt pos relativ zum Anfang der Datei

  • SEEK_CUR oder 1 – setzt pos relativ zur aktuellen Dateiposition

  • SEEK_END oder 2 – setzt pos relativ zum Ende der Datei

  • SEEK_HOLE – setzt pos auf die nächste Datenstelle, relativ zu pos

  • SEEK_DATA – setzt pos auf das nächste Loch in den Daten, relativ zu pos

Geändert in Version 3.3: Unterstützung für SEEK_HOLE und SEEK_DATA hinzugefügt.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

Parameter für die Funktion lseek() und die Methode seek() für Datei-ähnliche Objekte, für whence zur Anpassung des Dateizeigers.

SEEK_SET

Passen Sie die Dateiposition relativ zum Dateianfang an.

SEEK_CUR

Passen Sie die Dateiposition relativ zur aktuellen Dateiposition an.

SEEK_END

Passen Sie die Dateiposition relativ zum Dateiende an.

Ihre Werte sind 0, 1 bzw. 2.

os.SEEK_HOLE
os.SEEK_DATA

Parameter für die Funktion lseek() und die Methode seek() für dateiähnliche Objekte, zum Suchen von Dateidaten und Lücken in spärlich zugewiesenen Dateien.

SEEK_DATA

Passen Sie den Dateioffset relativ zur Suchposition auf den nächsten Speicherort mit Daten an.

SEEK_HOLE

Passen Sie den Dateioffset relativ zur Suchposition auf den nächsten Speicherort mit einer Lücke an. Eine Lücke ist als eine Sequenz von Nullen definiert.

Hinweis

Diese Operationen sind nur für Dateisysteme sinnvoll, die sie unterstützen.

Verfügbarkeit: Linux >= 3.1, macOS, Unix

Hinzugefügt in Version 3.3.

os.open(path, flags, mode=0o777, *, dir_fd=None)

Öffnen Sie die Datei path und setzen Sie verschiedene Flags gemäß flags und möglicherweise ihren Modus gemäß mode. Bei der Berechnung von mode wird die aktuelle umask-Maske zuerst entfernt. Geben Sie den Dateideskriptor der neu geöffneten Datei zurück. Der neue Dateideskriptor ist nicht vererbbar.

Eine Beschreibung der Flag- und Moduswerte finden Sie in der Dokumentation der C-Laufzeitumgebung; Konstanten für Flags (wie O_RDONLY und O_WRONLY) sind im Modul os definiert. Insbesondere unter Windows muss O_BINARY hinzugefügt werden, um Dateien im Binärmodus zu öffnen.

Diese Funktion kann Pfade relativ zu Verzeichnisse-Deskriptoren mit dem Parameter dir_fd unterstützen.

Löst ein Auditing-Ereignis open mit den Argumenten path, mode, flags aus.

Geändert in Version 3.4: Der neue Dateideskriptor ist jetzt nicht vererbbar.

Hinweis

Diese Funktion ist für die Low-Level-I/O bestimmt. Verwenden Sie für den normalen Gebrauch die integrierte Funktion open(), die ein Datei-Objekt mit den Methoden read() und write() (und vielen mehr) zurückgibt. Um einen Dateideskriptor in ein Datei-Objekt zu verpacken, verwenden Sie fdopen().

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.5: Wenn der Systemaufruf unterbrochen wird und der Signal-Handler keine Ausnahme auslöst, versucht die Funktion nun, den Systemaufruf erneut auszuführen, anstatt eine InterruptedError-Ausnahme auszulösen (siehe PEP 475 für die Begründung).

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Die folgenden Konstanten sind Optionen für den Parameter flags der Funktion open(). Sie können mit dem bitweisen OR-Operator | kombiniert werden. Einige davon sind nicht auf allen Plattformen verfügbar. Für Beschreibungen ihrer Verfügbarkeit und Verwendung konsultieren Sie die Handbuchseite open(2) unter Unix oder MSDN unter Windows.

os.O_RDONLY
os.O_WRONLY
os.O_RDWR
os.O_APPEND
os.O_CREAT
os.O_EXCL
os.O_TRUNC

Die obigen Konstanten sind unter Unix und Windows verfügbar.

os.O_DSYNC
os.O_RSYNC
os.O_SYNC
os.O_NDELAY
os.O_NONBLOCK
os.O_NOCTTY
os.O_CLOEXEC

Die obigen Konstanten sind nur unter Unix verfügbar.

Geändert in Version 3.3: Konstante O_CLOEXEC hinzugefügt.

os.O_BINARY
os.O_NOINHERIT
os.O_SHORT_LIVED
os.O_TEMPORARY
os.O_RANDOM
os.O_SEQUENTIAL
os.O_TEXT

Die obigen Konstanten sind nur unter Windows verfügbar.

os.O_EVTONLY
os.O_FSYNC
os.O_NOFOLLOW_ANY

Die obigen Konstanten sind nur unter macOS verfügbar.

Geändert in Version 3.10: Die Konstanten O_EVTONLY, O_FSYNC, O_SYMLINK und O_NOFOLLOW_ANY wurden hinzugefügt.

os.O_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
os.O_PATH
os.O_TMPFILE
os.O_SHLOCK
os.O_EXLOCK

Die obigen Konstanten sind Erweiterungen und nicht vorhanden, wenn sie nicht von der C-Bibliothek definiert werden.

Geändert in Version 3.4: O_PATH auf Systemen, die es unterstützen, hinzugefügt. O_TMPFILE hinzugefügt, nur verfügbar unter Linux Kernel 3.11 oder neuer.

os.openpty()

Öffnen Sie ein neues Pseudo-Terminal-Paar. Geben Sie ein Paar von Dateideskriptoren (master, slave) für das PTY und das TTY zurück. Die neuen Dateideskriptoren sind nicht vererbbar. Für einen (etwas) portableren Ansatz verwenden Sie das Modul pty.

Verfügbarkeit: Unix, nicht WASI.

Geändert in Version 3.4: Die neuen Dateideskriptoren sind jetzt nicht vererbbar.

os.pipe()

Erstellen Sie eine Pipe. Geben Sie ein Paar von Dateideskriptoren (r, w) zum Lesen und Schreiben zurück. Der neue Dateideskriptor ist nicht vererbbar.

Verfügbarkeit: Unix, Windows.

Geändert in Version 3.4: Die neuen Dateideskriptoren sind jetzt nicht vererbbar.

os.pipe2(flags, /)

Erstellen Sie eine Pipe mit atomar gesetzten flags. flags kann durch bitweises OR von einem oder mehreren der folgenden Werte konstruiert werden: O_NONBLOCK, O_CLOEXEC. Geben Sie ein Paar von Dateideskriptoren (r, w) zum Lesen bzw. Schreiben zurück.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.posix_fallocate(fd, offset, len, /)

Stellt sicher, dass genügend Festplattenspeicher für die durch fd angegebene Datei ab offset und für len Bytes zugewiesen wird.

Hinzugefügt in Version 3.3.

os.posix_fadvise(fd, offset, len, advice, /)

Kündigt die Absicht an, auf Daten in einem bestimmten Muster zuzugreifen, und ermöglicht dem Kernel so Optimierungen. Der Rat gilt für den durch fd angegebenen Bereich der Datei ab offset und für len Bytes. advice ist einer von POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED oder POSIX_FADV_DONTNEED.

Hinzugefügt in Version 3.3.

os.POSIX_FADV_NORMAL
os.POSIX_FADV_SEQUENTIAL
os.POSIX_FADV_RANDOM
os.POSIX_FADV_NOREUSE
os.POSIX_FADV_WILLNEED
os.POSIX_FADV_DONTNEED

Flags, die in advice in posix_fadvise() verwendet werden können, um das voraussichtlich verwendete Zugriffsmuster anzugeben.

Hinzugefügt in Version 3.3.

os.pread(fd, n, offset, /)

Liest maximal n Bytes aus dem Dateideskriptor fd an der Position offset, wobei der Dateioffset unverändert bleibt.

Gibt eine Bytezeichenkette mit den gelesenen Bytes zurück. Wenn das Ende der Datei, auf die sich fd bezieht, erreicht wurde, wird ein leeres Byte-Objekt zurückgegeben.

Hinzugefügt in Version 3.3.

os.posix_openpt(oflag, /)

Öffnet und gibt einen Dateideskriptor für ein Master-Pseudo-Terminal-Gerät zurück.

Ruft die C-Standardbibliotheksfunktion posix_openpt() auf. Das Argument oflag wird verwendet, um Statusflags und Zugriffsmodi für die Datei festzulegen, wie im Handbuch der Funktion posix_openpt() Ihres Systems angegeben.

Der zurückgegebene Dateideskriptor ist nicht vererbbar. Wenn der Wert O_CLOEXEC auf dem System verfügbar ist, wird er zu oflag hinzugefügt.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.13.

os.preadv(fd, buffers, offset, flags=0, /)

Liest von einem Dateideskriptor fd an der Position offset in mutable bytes-ähnliche Objekte buffers, wobei der Dateioffset unverändert bleibt. Überträgt Daten in jeden Puffer, bis dieser voll ist, und geht dann zum nächsten Puffer in der Sequenz über, um den Rest der Daten aufzunehmen.

Das Argument flags enthält eine bitweise OR-Verknüpfung von null oder mehr der folgenden Flags

Gibt die Gesamtzahl der tatsächlich gelesenen Bytes zurück, die kleiner sein kann als die Gesamtkapazität aller Objekte.

Das Betriebssystem kann ein Limit (sysconf()-Wert 'SC_IOV_MAX') für die Anzahl der verwendbaren Puffer festlegen.

Kombiniert die Funktionalität von os.readv() und os.pread().

Verfügbarkeit: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Die Verwendung von Flags erfordert Linux >= 4.6.

Hinzugefügt in Version 3.7.

os.RWF_NOWAIT

Warten Sie nicht auf Daten, die nicht sofort verfügbar sind. Wenn dieses Flag angegeben ist, wird der Systemaufruf sofort zurückgegeben, wenn er Daten aus dem Backing-Speicher lesen oder auf eine Sperre warten müsste.

Wenn einige Daten erfolgreich gelesen wurden, gibt er die Anzahl der gelesenen Bytes zurück. Wenn keine Bytes gelesen wurden, gibt er -1 zurück und setzt errno auf errno.EAGAIN.

Verfügbarkeit: Linux >= 4.14.

Hinzugefügt in Version 3.7.

os.RWF_HIPRI

Hochprioritäts-Lese-/Schreibvorgang. Ermöglicht blockbasierten Dateisystemen das Polling des Geräts, was zu geringerer Latenz führt, aber zusätzliche Ressourcen verbrauchen kann.

Derzeit ist diese Funktion unter Linux nur für Dateideskriptoren nutzbar, die mit dem Flag O_DIRECT geöffnet wurden.

Verfügbarkeit: Linux >= 4.6.

Hinzugefügt in Version 3.7.

os.ptsname(fd, /)

Gibt den Namen des Slave-Pseudo-Terminal-Geräts zurück, das mit dem Master-Pseudo-Terminal-Gerät verbunden ist, auf das der Dateideskriptor fd verweist. Der Dateideskriptor fd wird im Fehlerfall nicht geschlossen.

Ruft die reentranante C-Standardbibliotheksfunktion ptsname_r() auf, wenn diese verfügbar ist; andernfalls wird die C-Standardbibliotheksfunktion ptsname() aufgerufen, die nicht garantiert thread-sicher ist.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.13.

os.pwrite(fd, str, offset, /)

Schreibt die Bytezeichenkette in str an den Dateideskriptor fd an Position offset, wobei der Dateioffset unverändert bleibt.

Gibt die Anzahl der tatsächlich geschriebenen Bytes zurück.

Hinzugefügt in Version 3.3.

os.pwritev(fd, buffers, offset, flags=0, /)

Schreibt den Inhalt von buffers an den Dateideskriptor fd an den Offset offset, wobei der Dateioffset unverändert bleibt. buffers muss eine Sequenz von bytes-ähnlichen Objekten sein. Die Puffer werden in Array-Reihenfolge verarbeitet. Der gesamte Inhalt des ersten Puffers wird geschrieben, bevor zum zweiten übergegangen wird, und so weiter.

Das Argument flags enthält eine bitweise OR-Verknüpfung von null oder mehr der folgenden Flags

Gibt die Gesamtzahl der tatsächlich geschriebenen Bytes zurück.

Das Betriebssystem kann ein Limit (sysconf()-Wert 'SC_IOV_MAX') für die Anzahl der verwendbaren Puffer festlegen.

Kombiniert die Funktionalität von os.writev() und os.pwrite().

Verfügbarkeit: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Die Verwendung von Flags erfordert Linux >= 4.6.

Hinzugefügt in Version 3.7.

os.RWF_DSYNC

Bietet ein pro Schreibvorgang äquivalentes Verhalten zu dem Flag O_DSYNC von os.open(). Die Auswirkung dieses Flags gilt nur für den vom Systemaufruf geschriebenen Datenbereich.

Verfügbarkeit: Linux >= 4.7.

Hinzugefügt in Version 3.7.

os.RWF_SYNC

Bietet ein pro Schreibvorgang äquivalentes Verhalten zu dem Flag O_SYNC von os.open(). Die Auswirkung dieses Flags gilt nur für den vom Systemaufruf geschriebenen Datenbereich.

Verfügbarkeit: Linux >= 4.7.

Hinzugefügt in Version 3.7.

os.RWF_APPEND

Bietet ein pro Schreibvorgang äquivalentes Verhalten zu dem Flag O_APPEND von os.open(). Dieses Flag ist nur für os.pwritev() sinnvoll, und seine Auswirkung gilt nur für den vom Systemaufruf geschriebenen Datenbereich. Das Argument offset beeinflusst den Schreibvorgang nicht; die Daten werden immer am Ende der Datei angehängt. Wenn das Argument offset jedoch -1 ist, wird der aktuelle Dateioffset aktualisiert.

Verfügbarkeit: Linux >= 4.16.

Hinzugefügt in Version 3.10.

os.read(fd, n, /)

Liest maximal n Bytes aus dem Dateideskriptor fd.

Gibt eine Bytezeichenkette mit den gelesenen Bytes zurück. Wenn das Ende der Datei, auf die sich fd bezieht, erreicht wurde, wird ein leeres Byte-Objekt zurückgegeben.

Hinweis

Diese Funktion ist für die Low-Level-I/O bestimmt und muss auf einen Dateideskriptor angewendet werden, wie er von os.open() oder pipe() zurückgegeben wird. Um ein von der integrierten Funktion open() oder von popen() oder fdopen(), oder sys.stdin zurückgegebenes "Datei-Objekt" zu lesen, verwenden Sie dessen Methoden read() oder readline().

Geändert in Version 3.5: Wenn der Systemaufruf unterbrochen wird und der Signal-Handler keine Ausnahme auslöst, versucht die Funktion nun, den Systemaufruf erneut auszuführen, anstatt eine InterruptedError-Ausnahme auszulösen (siehe PEP 475 für die Begründung).

os.readinto(fd, buffer, /)

Liest von einem Dateideskriptor fd in ein mutable Puffer-Objekt buffer.

Der buffer sollte veränderlich und bytes-ähnlich sein. Bei Erfolg wird die Anzahl der gelesenen Bytes zurückgegeben. Es können weniger Bytes gelesen werden als die Größe des Puffers. Der zugrunde liegende Systemaufruf wird bei Unterbrechung durch ein Signal wiederholt, es sei denn, der Signal-Handler löst eine Ausnahme aus. Andere Fehler werden nicht wiederholt und es wird ein Fehler ausgelöst.

Gibt 0 zurück, wenn fd sich am Ende der Datei befindet oder wenn der bereitgestellte buffer die Länge 0 hat (was verwendet werden kann, um Fehler zu überprüfen, ohne Daten zu lesen). Gibt niemals einen negativen Wert zurück.

Hinweis

Diese Funktion ist für Low-Level-I/O gedacht und muss auf einen Dateideskriptor angewendet werden, wie er von os.open() oder os.pipe() zurückgegeben wird. Um ein von der integrierten Funktion open() zurückgegebenes "Datei-Objekt" oder sys.stdin zu lesen, verwenden Sie dessen Mitgliedsfunktionen, zum Beispiel io.BufferedIOBase.readinto(), io.BufferedIOBase.read() oder io.TextIOBase.read().

Hinzugefügt in Version 3.14.

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

Kopiert count Bytes vom Dateideskriptor in_fd zum Dateideskriptor out_fd beginnend bei offset. Gibt die Anzahl der gesendeten Bytes zurück. Bei Erreichen des EOF wird 0 zurückgegeben.

Die erste Funktionssignatur wird von allen Plattformen unterstützt, die sendfile() definieren.

Unter Linux wird, wenn offset als None angegeben wird, die Bytes ab der aktuellen Position von in_fd gelesen und die Position von in_fd aktualisiert.

Der zweite Fall kann unter macOS und FreeBSD verwendet werden, wo headers und trailers beliebige Sequenzen von Puffern sind, die vor und nach den Daten aus in_fd geschrieben werden. Er gibt dasselbe wie der erste Fall zurück.

Unter macOS und FreeBSD gibt ein Wert von 0 für count an, dass bis zum Ende von in_fd gesendet werden soll.

Alle Plattformen unterstützen Sockets als out_fd Dateideskriptor, und einige Plattformen erlauben auch andere Typen (z. B. reguläre Dateien, Pipes).

Plattformübergreifende Anwendungen sollten die Argumente headers, trailers und flags nicht verwenden.

Verfügbarkeit: Unix, nicht WASI.

Hinweis

Für einen höherwertigen Wrapper von sendfile() siehe socket.socket.sendfile().

Hinzugefügt in Version 3.3.

Geändert in Version 3.9: Die Parameter out und in wurden in out_fd und in_fd umbenannt.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

Parameter für die Funktion sendfile(), falls die Implementierung sie unterstützt.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.3.

os.SF_NOCACHE

Parameter für die Funktion sendfile(), falls die Implementierung sie unterstützt. Die Daten werden nicht im virtuellen Speicher zwischengespeichert und danach freigegeben.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.11.

os.set_blocking(fd, blocking, /)

Setzt den Blocking-Modus des angegebenen Dateideskriptors. Setzt das Flag O_NONBLOCK, wenn blocking False ist, löscht das Flag andernfalls.

Siehe auch get_blocking() und socket.socket.setblocking().

Verfügbarkeit: Unix, Windows.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Unter Windows ist diese Funktion auf Pipes beschränkt.

Hinzugefügt in Version 3.5.

Geändert in Version 3.12: Unterstützung für Pipes unter Windows hinzugefügt.

os.splice(src, dst, count, offset_src=None, offset_dst=None, flags=0)

Überträgt count Bytes vom Dateideskriptor src, beginnend beim Offset offset_src, zum Dateideskriptor dst, beginnend beim Offset offset_dst.

Das Splice-Verhalten kann durch Angabe eines flags-Werts modifiziert werden. Jede der folgenden Variablen kann verwendet werden, kombiniert mit einem bitweisen OR (dem Operator |)

  • Wenn SPLICE_F_MOVE angegeben ist, wird der Kernel gebeten, Seiten zu verschieben statt zu kopieren, aber Seiten können trotzdem kopiert werden, wenn der Kernel die Seiten nicht aus der Pipe verschieben kann.

  • Wenn SPLICE_F_NONBLOCK angegeben ist, wird der Kernel gebeten, nicht auf I/O zu warten. Dies macht die Splice-Pipe-Operationen nicht blockierend, aber Splice kann trotzdem blockieren, da die gesplicten Dateideskriptoren blockieren können.

  • Wenn SPLICE_F_MORE angegeben ist, weist dies den Kernel darauf hin, dass in einem nachfolgenden Splice weitere Daten erwartet werden.

Mindestens einer der Dateideskriptoren muss sich auf eine Pipe beziehen. Wenn offset_src None ist, wird src ab der aktuellen Position gelesen; entsprechend für offset_dst. Der Offset, der dem Dateideskriptor einer Pipe zugeordnet ist, muss None sein. Die Dateien, auf die src und dst verweisen, müssen sich im selben Dateisystem befinden, andernfalls wird eine OSError mit errno auf errno.EXDEV gesetzt ausgelöst.

Diese Kopie wird ohne die zusätzlichen Kosten der Datenübertragung vom Kernel in den Benutzerbereich und dann zurück in den Kernel durchgeführt. Zusätzlich könnten einige Dateisysteme zusätzliche Optimierungen implementieren. Die Kopie erfolgt so, als wären beide Dateien als binär geöffnet worden.

Nach erfolgreicher Ausführung wird die Anzahl der Bytes zurückgegeben, die in die Pipe gespliced wurden oder aus ihr heraus. Ein Rückgabewert von 0 bedeutet Ende der Eingabe. Wenn src auf eine Pipe verweist, bedeutet dies, dass keine Daten zu übertragen waren, und es wäre unsinnig zu blockieren, da keine Schreiber mit dem Schreibende der Pipe verbunden sind.

Siehe auch

Die Manpage splice(2).

Verfügbarkeit: Linux >= 2.6.17 mit glibc >= 2.5

Hinzugefügt in Version 3.10.

os.SPLICE_F_MOVE
os.SPLICE_F_NONBLOCK
os.SPLICE_F_MORE

Hinzugefügt in Version 3.10.

os.readv(fd, buffers, /)

Liest aus einem Dateideskriptor fd in eine Anzahl veränderlicher bytes-ähnlicher Objekte buffers. Überträgt Daten in jeden Puffer, bis dieser voll ist, und geht dann zum nächsten Puffer in der Sequenz über, um die restlichen Daten aufzunehmen.

Gibt die Gesamtzahl der tatsächlich gelesenen Bytes zurück, die kleiner sein kann als die Gesamtkapazität aller Objekte.

Das Betriebssystem kann ein Limit (sysconf()-Wert 'SC_IOV_MAX') für die Anzahl der verwendbaren Puffer festlegen.

Hinzugefügt in Version 3.3.

os.tcgetpgrp(fd, /)

Gibt die Prozessgruppe zurück, die mit dem Terminal verbunden ist, das durch fd (ein offener Dateideskriptor, wie er von os.open() zurückgegeben wird) gegeben ist.

Verfügbarkeit: Unix, nicht WASI.

os.tcsetpgrp(fd, pg, /)

Setzt die Prozessgruppe, die mit dem Terminal verbunden ist, das durch fd (ein offener Dateideskriptor, wie er von os.open() zurückgegeben wird) gegeben ist, auf pg.

Verfügbarkeit: Unix, nicht WASI.

os.ttyname(fd, /)

Gibt eine Zeichenkette zurück, die das Terminalgerät angibt, das mit dem Dateideskriptor fd verbunden ist. Wenn fd nicht mit einem Terminalgerät verbunden ist, wird eine Ausnahme ausgelöst.

os.unlockpt(fd, /)

Entsperrt das Slave-Pseudoterminalgerät, das mit dem Master-Pseudoterminalgerät verbunden ist, auf das sich der Dateideskriptor fd bezieht. Der Dateideskriptor fd wird bei einem Fehler nicht geschlossen.

Ruft die C-Standardbibliotheksfunktion unlockpt() auf.

Verfügbarkeit: Unix, nicht WASI.

Hinzugefügt in Version 3.13.

os.write(fd, str, /)

Schreibt die Bytesequenz in str auf den Dateideskriptor fd.

Gibt die Anzahl der tatsächlich geschriebenen Bytes zurück.

Hinweis

Diese Funktion ist für Low-Level-I/O gedacht und muss auf einen Dateideskriptor angewendet werden, wie er von os.open() oder pipe() zurückgegeben wird. Um ein von der integrierten Funktion open() oder von popen() oder fdopen(), oder sys.stdout oder sys.stderr zurückgegebenes "Datei-Objekt" zu schreiben, verwenden Sie dessen write()-Methode.

Geändert in Version 3.5: Wenn der Systemaufruf unterbrochen wird und der Signal-Handler keine Ausnahme auslöst, wiederholt die Funktion nun den Systemaufruf, anstatt eine InterruptedError-Ausnahme auszulösen (siehe PEP 475 für die Begründung).

os.writev(fd, buffers, /)

Schreibt den Inhalt von buffers auf den Dateideskriptor fd. buffers muss eine Sequenz von bytes-ähnlichen Objekten sein. Buffer werden in Array-Reihenfolge verarbeitet. Der gesamte Inhalt des ersten Puffers wird geschrieben, bevor zum zweiten übergegangen wird, und so weiter.

Gibt die Gesamtzahl der tatsächlich geschriebenen Bytes zurück.

Das Betriebssystem kann ein Limit (sysconf()-Wert 'SC_IOV_MAX') für die Anzahl der verwendbaren Puffer festlegen.

Hinzugefügt in Version 3.3.

Abfragen der Größe eines Terminals

Hinzugefügt in Version 3.3.

os.get_terminal_size(fd=STDOUT_FILENO, /)

Gibt die Größe des Terminalfensters als Tupel vom Typ terminal_size zurück: (columns, lines).

Das optionale Argument fd (Standard: STDOUT_FILENO, oder Standardausgabe) gibt an, welcher Dateideskriptor abgefragt werden soll.

Wenn der Dateideskriptor nicht mit einem Terminal verbunden ist, wird eine OSError ausgelöst.

shutil.get_terminal_size() ist die höherwertige Funktion, die normalerweise verwendet werden sollte. os.get_terminal_size ist die Low-Level-Implementierung.

Verfügbarkeit: Unix, Windows.

class os.terminal_size

Eine Unterklasse von Tupel, die (columns, lines) der Größe des Terminalfensters enthält.

columns

Breite des Terminalfensters in Zeichen.

lines

Höhe des Terminalfensters in Zeichen.

Vererbung von Dateideskriptoren

Hinzugefügt in Version 3.4.

Ein Dateideskriptor hat ein "erbliches" Flag, das angibt, ob der Dateideskriptor von Kindprozessen geerbt werden kann. Seit Python 3.4 sind von Python erstellte Dateideskriptoren standardmäßig nicht erblich.

Unter UNIX werden nicht erbliche Dateideskriptoren in Kindprozessen bei der Ausführung eines neuen Programms geschlossen, andere Dateideskriptoren werden geerbt.

Unter Windows werden nicht erbliche Handles und Dateideskriptoren in Kindprozessen geschlossen, mit Ausnahme von Standardströmen (Dateideskriptoren 0, 1 und 2: stdin, stdout und stderr), die immer geerbt werden. Bei Verwendung der spawn*-Funktionen werden alle erblichen Handles und alle erblichen Dateideskriptoren geerbt. Bei Verwendung des Moduls subprocess werden alle Dateideskriptoren außer Standardströmen geschlossen, und erbliche Handles werden nur geerbt, wenn der Parameter close_fds auf False gesetzt ist.

Auf WebAssembly-Plattformen kann der Dateideskriptor nicht geändert werden.

os.get_inheritable(fd, /)

Gibt das "erbliches" Flag des angegebenen Dateideskriptors zurück (ein boolescher Wert).

os.set_inheritable(fd, inheritable, /)

Setzt das "erbliches" Flag des angegebenen Dateideskriptors.

os.get_handle_inheritable(handle, /)

Gibt das "erbliches" Flag des angegebenen Handles zurück (ein boolescher Wert).

Verfügbarkeit: Windows.

os.set_handle_inheritable(handle, inheritable, /)

Setzt das "erbliches" Flag des angegebenen Handles.

Verfügbarkeit: Windows.

Dateien und Verzeichnisse

Auf einigen Unix-Plattformen unterstützen viele dieser Funktionen eine oder mehrere der folgenden Funktionen

  • Angabe eines Dateideskriptors: Normalerweise muss das path-Argument, das Funktionen im Modul os übergeben wird, ein String sein, der einen Dateipfad angibt. Einige Funktionen akzeptieren jedoch alternativ einen offenen Dateideskriptor für ihr path-Argument. Die Funktion operiert dann auf der Datei, auf die der Deskriptor verweist. Für POSIX-Systeme ruft Python die Variante der Funktion auf, die mit f präfigiert ist (z. B. Aufruf von fchdir anstelle von chdir).

    Sie können mit os.supports_fd prüfen, ob ein Dateideskriptor für eine bestimmte Funktion auf Ihrer Plattform als Pfad angegeben werden kann. Wenn diese Funktionalität nicht verfügbar ist, löst die Verwendung eine NotImplementedError aus.

    Wenn die Funktion auch die Argumente dir_fd oder follow_symlinks unterstützt, ist es ein Fehler, eines davon anzugeben, wenn path als Dateideskriptor angegeben wird.

  • Pfade relativ zu Verzeichnisdeskriptoren: Wenn dir_fd nicht None ist, sollte es ein Dateideskriptor sein, der auf ein Verzeichnis verweist, und der zu bearbeitende Pfad sollte relativ sein; Pfad ist dann relativ zu diesem Verzeichnis. Wenn der Pfad absolut ist, wird dir_fd ignoriert. Für POSIX-Systeme ruft Python die Variante der Funktion mit dem Suffix at und möglicherweise dem Präfix f auf (z. B. Aufruf von faccessat anstelle von access).

    Sie können mit os.supports_dir_fd prüfen, ob dir_fd für eine bestimmte Funktion auf Ihrer Plattform unterstützt wird. Wenn es nicht verfügbar ist, löst die Verwendung eine NotImplementedError aus.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

Verwendet die reale UID/GID, um den Zugriff auf path zu testen. Beachten Sie, dass die meisten Operationen die effektive UID/GID verwenden, daher kann diese Routine in einer suid/sgid-Umgebung verwendet werden, um zu testen, ob der aufrufende Benutzer den angegebenen Zugriff auf path hat. mode sollte F_OK sein, um die Existenz von path zu testen, oder es kann die inklusive OR von einem oder mehreren von R_OK, W_OK und X_OK sein, um Berechtigungen zu testen. Gibt True zurück, wenn der Zugriff erlaubt ist, False, wenn nicht. Siehe die Unix-Manpage access(2) für weitere Informationen.

Diese Funktion kann Pfade relativ zu Verzeichnisdeskriptoren und das Nicht-Verfolgen von symbolischen Links unterstützen.

Wenn effective_ids auf True gesetzt ist, führt access() seine Zugriffsprüfungen mit der effektiven UID/GID anstelle der realen UID/GID durch. effective_ids ist auf Ihrer Plattform möglicherweise nicht unterstützt; Sie können mit os.supports_effective_ids prüfen, ob es verfügbar ist. Wenn es nicht verfügbar ist, löst die Verwendung eine NotImplementedError aus.

Hinweis

Die Verwendung von access() zur Überprüfung, ob ein Benutzer z. B. berechtigt ist, eine Datei zu öffnen, bevor dies tatsächlich mit open() geschieht, schafft eine Sicherheitslücke, da der Benutzer die kurze Zeitspanne zwischen der Prüfung und dem Öffnen der Datei ausnutzen könnte, um sie zu manipulieren. Es ist vorzuziehen, EAFP-Techniken zu verwenden. Zum Beispiel

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()
return "some default data"

wird besser geschrieben als

try:
    fp = open("myfile")
except PermissionError:
    return "some default data"
else:
    with fp:
        return fp.read()

Hinweis

I/O-Operationen können fehlschlagen, selbst wenn access() anzeigt, dass sie erfolgreich wären, insbesondere bei Operationen auf Netzdateisystemen, die Berechtigungsschemata über das übliche POSIX-Berechtigungsbitmodell hinaus haben können.

Geändert in Version 3.3: Hinzugefügt wurden die Parameter dir_fd, effective_ids und follow_symlinks.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.F_OK
os.R_OK
os.W_OK
os.X_OK

Werte, die als Parameter mode an access() übergeben werden, um die Existenz, Lesbarkeit, Schreibbarkeit bzw. Ausführbarkeit von path zu testen.

os.chdir(path)

Ändert das aktuelle Arbeitsverzeichnis zu path.

Diese Funktion kann die Angabe eines Dateideskriptors unterstützen. Der Deskriptor muss auf ein geöffnetes Verzeichnis verweisen, nicht auf eine geöffnete Datei.

Diese Funktion kann OSError und Unterklassen wie FileNotFoundError, PermissionError und NotADirectoryError auslösen.

Löst ein Audit-Ereignis os.chdir mit dem Argument path aus.

Geändert in Version 3.3: Unterstützung für die Angabe von path als Dateideskriptor auf einigen Plattformen hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.chflags(path, flags, *, follow_symlinks=True)

Setzt die Flags von path auf die numerischen flags. flags kann eine Kombination (bitwise OR) der folgenden Werte sein (wie im stat Modul definiert)

Diese Funktion kann das Nicht-Folgen von Symlinks unterstützen.

Löst ein Audit-Ereignis os.chflags mit den Argumenten path, flags aus.

Verfügbarkeit: Unix, nicht WASI.

Geändert in Version 3.3: Parameter follow_symlinks hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

Ändert den Modus von path auf den numerischen mode. mode kann einen der folgenden Werte (wie im stat Modul definiert) oder bitweise OR-Kombinationen davon enthalten

Diese Funktion kann die Angabe von einem Dateideskriptor, relativen Pfaden zu Verzeichnisdeskriptoren und das Nicht-Folgen von Symlinks unterstützen.

Hinweis

Obwohl Windows chmod() unterstützt, können Sie damit nur das schreibgeschützte Flag der Datei setzen (über die Konstanten stat.S_IWRITE und stat.S_IREAD oder einen entsprechenden ganzzahligen Wert). Alle anderen Bits werden ignoriert. Der Standardwert für follow_symlinks ist unter Windows False.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Löst ein Auditing-Ereignis os.chmod mit den Argumenten path, mode, dir_fd aus.

Geändert in Version 3.3: Unterstützung für die Angabe von path als geöffneter Dateideskriptor sowie der Argumente dir_fd und follow_symlinks hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.13: Unterstützung für einen Dateideskriptor und das Argument follow_symlinks unter Windows hinzugefügt.

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

Ändert den Besitzer und die Gruppen-ID von path auf die numerischen uid und gid. Um eine der IDs unverändert zu lassen, setzen Sie sie auf -1.

Diese Funktion kann die Angabe von einem Dateideskriptor, relativen Pfaden zu Verzeichnisdeskriptoren und das Nicht-Folgen von Symlinks unterstützen.

Siehe shutil.chown() für eine höherstufige Funktion, die Namen zusätzlich zu numerischen IDs akzeptiert.

Löst ein Auditing-Ereignis os.chown mit den Argumenten path, uid, gid, dir_fd aus.

Verfügbarkeit: Unix.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Geändert in Version 3.3: Unterstützung für die Angabe von path als geöffneter Dateideskriptor sowie der Argumente dir_fd und follow_symlinks hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.chroot(path)

Ändert das Stammverzeichnis des aktuellen Prozesses zu path.

Verfügbarkeit: Unix, nicht WASI, nicht Android.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.fchdir(fd)

Ändert das aktuelle Arbeitsverzeichnis zu dem Verzeichnis, das durch den Dateideskriptor fd repräsentiert wird. Der Deskriptor muss sich auf ein geöffnetes Verzeichnis beziehen, nicht auf eine offene Datei. Ab Python 3.3 ist dies äquivalent zu os.chdir(fd).

Löst ein Audit-Ereignis os.chdir mit dem Argument path aus.

os.getcwd()

Gibt einen String zurück, der das aktuelle Arbeitsverzeichnis repräsentiert.

os.getcwdb()

Gibt ein Byte-String zurück, der das aktuelle Arbeitsverzeichnis repräsentiert.

Geändert in Version 3.8: Die Funktion verwendet nun die UTF-8-Kodierung unter Windows anstelle der ANSI-Codepage: siehe PEP 529 für die Begründung. Die Funktion ist unter Windows nicht mehr veraltet.

os.lchflags(path, flags)

Setzt die Flags von path auf die numerischen flags, wie chflags(), aber folgt keinen symbolischen Links. Ab Python 3.3 ist dies äquivalent zu os.chflags(path, flags, follow_symlinks=False).

Löst ein Audit-Ereignis os.chflags mit den Argumenten path, flags aus.

Verfügbarkeit: Unix, nicht WASI.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.lchmod(path, mode)

Ändert den Modus von path auf den numerischen mode. Wenn path ein Symlink ist, wird der Symlink anstelle des Ziels beeinflusst. Sehen Sie die Dokumentation für chmod() für mögliche Werte von mode. Ab Python 3.3 ist dies äquivalent zu os.chmod(path, mode, follow_symlinks=False).

lchmod() ist kein Teil von POSIX, aber Unix-Implementierungen können es haben, wenn die Änderung des Modus von symbolischen Links unterstützt wird.

Löst ein Auditing-Ereignis os.chmod mit den Argumenten path, mode, dir_fd aus.

Verfügbarkeit: Unix, Windows, nicht Linux, FreeBSD >= 1.3, NetBSD >= 1.3, nicht OpenBSD

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.13: Unterstützung für Windows hinzugefügt.

os.lchown(path, uid, gid)

Ändert die Besitzer- und Gruppen-ID von path auf die numerischen uid und gid. Diese Funktion folgt keinen symbolischen Links. Ab Python 3.3 ist dies äquivalent zu os.chown(path, uid, gid, follow_symlinks=False).

Löst ein Auditing-Ereignis os.chown mit den Argumenten path, uid, gid, dir_fd aus.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Erstellt einen Hardlink, der auf src zeigt und dst heißt.

Diese Funktion kann die Angabe von src_dir_fd und/oder dst_dir_fd zur Bereitstellung von relativen Pfaden zu Verzeichnisdeskriptoren sowie das Nicht-Folgen von Symlinks unterstützen. Der Standardwert von follow_symlinks ist unter Windows False.

Löst ein Audit-Ereignis os.link mit den Argumenten src, dst, src_dir_fd, dst_dir_fd aus.

Verfügbarkeit: Unix, Windows.

Geändert in Version 3.2: Unterstützung für Windows hinzugefügt.

Geändert in Version 3.3: Parameter src_dir_fd, dst_dir_fd und follow_symlinks hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt für src und dst.

os.listdir(path='.')

Gibt eine Liste zurück, die die Namen der Einträge im Verzeichnis path enthält. Die Liste ist in beliebiger Reihenfolge und enthält nicht die speziellen Einträge '.' und '..', auch wenn sie im Verzeichnis vorhanden sind. Wenn eine Datei während des Aufrufs dieser Funktion aus dem Verzeichnis entfernt oder hinzugefügt wird, ist es ungewiss, ob ein Name für diese Datei enthalten sein wird.

path kann ein pfadähnliches Objekt sein. Wenn path vom Typ bytes ist (direkt oder indirekt über die PathLike-Schnittstelle), sind die zurückgegebenen Dateinamen ebenfalls vom Typ bytes; in allen anderen Fällen sind sie vom Typ str.

Diese Funktion kann auch die Angabe von einem Dateideskriptor unterstützen; der Dateideskriptor muss sich auf ein Verzeichnis beziehen.

Löst ein Audit-Ereignis os.listdir mit dem Argument path aus.

Hinweis

Zur Kodierung von str-Dateinamen in bytes verwenden Sie fsencode().

Siehe auch

Die Funktion scandir() gibt Verzeichniseinträge zusammen mit Dateiattributinformationen zurück, was für viele gängige Anwendungsfälle eine bessere Leistung bietet.

Geändert in Version 3.2: Der Parameter path wurde optional.

Geändert in Version 3.3: Unterstützung für die Angabe von path als geöffneter Dateideskriptor hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.listdrives()

Gibt eine Liste der Laufwerksnamen auf einem Windows-System zurück.

Ein Laufwerksname sieht typischerweise aus wie 'C:\\'. Nicht jeder Laufwerksname ist mit einem Volume verbunden, und einige können aus verschiedenen Gründen unzugänglich sein, einschließlich Berechtigungen, Netzwerkverbindung oder fehlendem Medium. Diese Funktion testet nicht auf Zugriff.

Kann OSError auslösen, wenn beim Sammeln der Laufwerksnamen ein Fehler auftritt.

Löst ein Audit-Ereignis os.listdrives ohne Argumente aus.

Verfügbarkeit: Windows

Hinzugefügt in Version 3.12.

os.listmounts(volume)

Gibt eine Liste der Mount-Punkte für ein Volume auf einem Windows-System zurück.

volume muss als GUID-Pfad dargestellt werden, wie sie von os.listvolumes() zurückgegeben werden. Volumes können an mehreren Orten gemountet sein oder gar nicht. In letzterem Fall ist die Liste leer. Mount-Punkte, die nicht mit einem Volume verbunden sind, werden von dieser Funktion nicht zurückgegeben.

Die von dieser Funktion zurückgegebenen Mount-Punkte sind absolute Pfade und können länger sein als der Laufwerksname.

Löst OSError aus, wenn das Volume nicht erkannt wird oder wenn beim Sammeln der Pfade ein Fehler auftritt.

Löst ein Audit-Ereignis os.listmounts mit dem Argument volume aus.

Verfügbarkeit: Windows

Hinzugefügt in Version 3.12.

os.listvolumes()

Gibt eine Liste der Volumes im System zurück.

Volumes werden typischerweise als GUID-Pfad dargestellt, der aussieht wie \\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\. Dateien können normalerweise über einen GUID-Pfad zugegriffen werden, sofern die Berechtigungen dies zulassen. Benutzer sind jedoch im Allgemeinen nicht damit vertraut, daher wird die empfohlene Verwendung dieser Funktion die Abfrage von Mount-Punkten mit os.listmounts() sein.

Kann OSError auslösen, wenn beim Sammeln der Volumes ein Fehler auftritt.

Löst ein Audit-Ereignis os.listvolumes ohne Argumente aus.

Verfügbarkeit: Windows

Hinzugefügt in Version 3.12.

os.lstat(path, *, dir_fd=None)

Führt den äquivalenten lstat() Systemaufruf auf dem angegebenen Pfad aus. Ähnlich wie stat(), aber folgt keinen symbolischen Links. Gibt ein stat_result-Objekt zurück.

Auf Plattformen, die keine symbolischen Links unterstützen, ist dies ein Alias für stat().

Ab Python 3.3 ist dies äquivalent zu os.stat(path, dir_fd=dir_fd, follow_symlinks=False).

Diese Funktion kann auch relative Pfade zu Verzeichnisdeskriptoren unterstützen.

Siehe auch

Die Funktion stat().

Geändert in Version 3.2: Unterstützung für Windows 6.0 (Vista) symbolische Links hinzugefügt.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.8: Unter Windows werden nun Reparse-Punkte geöffnet, die einen anderen Pfad darstellen (Namenssurrogate), einschließlich symbolischer Links und Verzeichnungsverbindungen. Andere Arten von Reparse-Punkten werden vom Betriebssystem wie bei stat() aufgelöst.

os.mkdir(path, mode=0o777, *, dir_fd=None)

Erstellt ein Verzeichnis namens path mit dem numerischen Modus mode.

Wenn das Verzeichnis bereits existiert, wird FileExistsError ausgelöst. Wenn ein übergeordnetes Verzeichnis im Pfad nicht existiert, wird FileNotFoundError ausgelöst.

Auf einigen Systemen wird mode ignoriert. Wo er verwendet wird, wird die aktuelle umask zuerst maskiert. Wenn andere Bits als die letzten 9 (d.h. die letzten 3 Ziffern der oktalen Darstellung des mode) gesetzt sind, ist ihre Bedeutung plattformabhängig. Auf einigen Plattformen werden sie ignoriert und Sie sollten chmod() explizit aufrufen, um sie zu setzen.

Unter Windows wird ein mode von 0o700 speziell behandelt, um den Zugriff auf das neue Verzeichnis so zu regeln, dass nur der aktuelle Benutzer und Administratoren Zugriff haben. Andere Werte von mode werden ignoriert.

Diese Funktion kann auch relative Pfade zu Verzeichnisdeskriptoren unterstützen.

Es ist auch möglich, temporäre Verzeichnisse zu erstellen; siehe das Modul tempfiles Funktion tempfile.mkdtemp().

Löst ein Audit-Ereignis os.mkdir mit den Argumenten path, mode, dir_fd aus.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.13: Windows behandelt nun einen mode von 0o700.

os.makedirs(name, mode=0o777, exist_ok=False)

Rekursive Verzeichniserstellungsfunktion. Ähnlich wie mkdir(), aber erstellt alle Zwischenverzeichnisse, die zur Aufnahme des Zielverzeichnisses benötigt werden.

Der Parameter mode wird an mkdir() zum Erstellen des Zielverzeichnisses übergeben; siehe die Beschreibung von mkdir(), wie er interpretiert wird. Um die Dateiberechtigungsbits aller neu erstellten übergeordneten Verzeichnisse zu setzen, können Sie die umask vor dem Aufruf von makedirs() setzen. Die Dateiberechtigungsbits bestehender übergeordneter Verzeichnisse werden nicht geändert.

Wenn exist_ok False (der Standardwert) ist, wird FileExistsError ausgelöst, wenn das Zielverzeichnis bereits existiert.

Hinweis

makedirs() wird verwirrt, wenn die zu erstellenden Pfadelemente pardir (z. B. „..“ unter UNIX-Systemen) enthalten.

Diese Funktion verarbeitet UNC-Pfade korrekt.

Löst ein Audit-Ereignis os.mkdir mit den Argumenten path, mode, dir_fd aus.

Geändert in Version 3.2: Parameter exist_ok hinzugefügt.

Geändert in Version 3.4.1: Vor Python 3.4.1, wenn exist_ok True war und das Verzeichnis existierte, würde makedirs() immer noch einen Fehler auslösen, wenn mode nicht mit dem Modus des vorhandenen Verzeichnisses übereinstimmte. Da dieses Verhalten nicht sicher implementiert werden konnte, wurde es in Python 3.4.1 entfernt. Siehe bpo-21082.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.7: Das Argument mode beeinflusst nicht mehr die Dateiberechtigungsbits von neu erstellten Zwischenverzeichnissen.

os.mkfifo(path, mode=0o666, *, dir_fd=None)

Erstellt eine FIFO (eine benannte Pipe) namens path mit dem numerischen Modus mode. Die aktuelle umask wird zuerst aus dem Modus maskiert.

Diese Funktion kann auch relative Pfade zu Verzeichnisdeskriptoren unterstützen.

FIFOs sind Pipes, auf die wie reguläre Dateien zugegriffen werden kann. FIFOs existieren, bis sie gelöscht werden (z. B. mit os.unlink()). Im Allgemeinen werden FIFOs als Treffpunkte zwischen „Client“- und „Server“-Prozessen verwendet: Der Server öffnet die FIFO zum Lesen und der Client öffnet sie zum Schreiben. Beachten Sie, dass mkfifo() die FIFO nicht öffnet – sie erstellt nur den Treffpunkt.

Verfügbarkeit: Unix, nicht WASI.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

Erstellt einen Dateisystemknoten (Datei, Gerätedatei oder benannte Pipe) namens path. mode gibt sowohl die zu verwendenden Berechtigungen als auch den zu erstellenden Knotentyp an, der mit einem der Werte stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK und stat.S_IFIFO kombiniert wird (diese Konstanten sind in stat verfügbar). Für stat.S_IFCHR und stat.S_IFBLK definiert device die neu erstellte Gerätedatei (wahrscheinlich mit os.makedev()), andernfalls wird sie ignoriert.

Diese Funktion kann auch relative Pfade zu Verzeichnisdeskriptoren unterstützen.

Verfügbarkeit: Unix, nicht WASI.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.major(device, /)

Extrahieren Sie die Major-Gerätenummer aus einer Rohgerätenummer (normalerweise das Feld st_dev oder st_rdev von stat).

os.minor(device, /)

Extrahieren Sie die Minor-Gerätenummer aus einer Rohgerätenummer (normalerweise das Feld st_dev oder st_rdev von stat).

os.makedev(major, minor, /)

Stellen Sie eine Rohgerätenummer aus den Major- und Minor-Gerätenummern zusammen.

os.pathconf(path, name)

Gibt systemkonfigurationsbezogene Informationen für eine benannte Datei zurück. name gibt den abzurufenden Konfigurationswert an; es kann sich um einen String handeln, der der Name eines definierten Systemwerts ist; diese Namen sind in einer Reihe von Standards (POSIX.1, Unix 95, Unix 98 und andere) spezifiziert. Einige Plattformen definieren auch zusätzliche Namen. Die dem Host-Betriebssystem bekannten Namen finden Sie im Wörterbuch pathconf_names. Für Konfigurationsvariablen, die nicht in dieser Zuordnung enthalten sind, wird auch die Übergabe einer Ganzzahl für name akzeptiert.

Wenn name eine Zeichenkette ist und nicht bekannt ist, wird ValueError ausgelöst. Wenn ein bestimmter Wert für name vom Hostsystem nicht unterstützt wird, auch wenn er in pathconf_names enthalten ist, wird eine OSError mit errno.EINVAL für die Fehlernummer ausgelöst.

Diese Funktion kann die Angabe eines Dateideskriptors unterstützen.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.pathconf_names

Wörterbuch, das die von pathconf() und fpathconf() akzeptierten Namen auf die vom Host-Betriebssystem definierten Ganzzahlwerte für diese Namen abbildet. Dies kann verwendet werden, um die vom System bekannten Namen zu ermitteln.

Gibt einen String zurück, der den Pfad repräsentiert, auf den der symbolische Link zeigt. Das Ergebnis kann ein absoluter oder relativer Pfadname sein; wenn er relativ ist, kann er mit os.path.join(os.path.dirname(path), result) in einen absoluten Pfadnamen umgewandelt werden.

Wenn path ein String-Objekt ist (direkt oder indirekt über eine PathLike-Schnittstelle), wird auch das Ergebnis ein String-Objekt sein und der Aufruf kann einen UnicodeDecodeError auslösen. Wenn path ein Bytes-Objekt ist (direkt oder indirekt), ist das Ergebnis ein Bytes-Objekt.

Diese Funktion kann auch relative Pfade zu Verzeichnisdeskriptoren unterstützen.

Wenn versucht wird, einen Pfad aufzulösen, der Links enthalten kann, verwenden Sie realpath(), um Rekursion und plattformspezifische Unterschiede ordnungsgemäß zu behandeln.

Verfügbarkeit: Unix, Windows.

Geändert in Version 3.2: Unterstützung für Windows 6.0 (Vista) symbolische Links hinzugefügt.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein Pfad-ähnliches Objekt unter Unix.

Geändert in Version 3.8: Akzeptiert ein Pfad-ähnliches Objekt und ein Bytes-Objekt unter Windows.

Unterstützung für Verzeichniskreuzungen hinzugefügt und Rückgabe des Substitutionspfads geändert (der normalerweise ein Präfix \\?\ enthält), anstatt des optionalen "print name"-Feldes, das zuvor zurückgegeben wurde.

os.remove(path, *, dir_fd=None)

Entfernt (löscht) die Datei path. Wenn path ein Verzeichnis ist, wird eine OSError ausgelöst. Verwenden Sie rmdir(), um Verzeichnisse zu entfernen. Wenn die Datei nicht existiert, wird eine FileNotFoundError ausgelöst.

Diese Funktion kann Pfade relativ zu Verzeichnisskriptoren unterstützen.

Unter Windows verursacht der Versuch, eine verwendete Datei zu entfernen, eine Ausnahme; unter Unix wird der Verzeichniseintrag entfernt, aber der für die Datei zugewiesene Speicher wird erst verfügbar, wenn die ursprüngliche Datei nicht mehr verwendet wird.

Diese Funktion ist semantisch identisch mit unlink().

Löst ein Audit-Ereignis os.remove mit den Argumenten path, dir_fd aus.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.removedirs(name)

Entfernt Verzeichnisse rekursiv. Funktioniert wie rmdir(), außer dass, wenn das Blattverzeichnis erfolgreich entfernt wird, removedirs() versucht, alle übergeordneten Verzeichnisse, die in path genannt werden, sukzessive zu entfernen, bis ein Fehler auftritt (der ignoriert wird, da er im Allgemeinen bedeutet, dass ein übergeordnetes Verzeichnis nicht leer ist). Zum Beispiel entfernt os.removedirs('foo/bar/baz') zuerst das Verzeichnis 'foo/bar/baz' und dann 'foo/bar' und 'foo', wenn diese leer sind. Löst OSError aus, wenn das Blattverzeichnis nicht erfolgreich entfernt werden konnte.

Löst ein Audit-Ereignis os.remove mit den Argumenten path, dir_fd aus.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Benennt die Datei oder das Verzeichnis src in dst um. Wenn dst existiert, schlägt die Operation in einer Reihe von Fällen mit einer Unterklasse von OSError fehl.

Unter Windows wird bei vorhandenem dst immer eine FileExistsError ausgelöst. Die Operation kann fehlschlagen, wenn src und dst auf unterschiedlichen Dateisystemen liegen. Verwenden Sie shutil.move(), um das Verschieben auf ein anderes Dateisystem zu unterstützen.

Unter Unix wird, wenn src eine Datei und dst ein Verzeichnis ist oder umgekehrt, eine IsADirectoryError oder eine NotADirectoryError entsprechend ausgelöst. Wenn beides Verzeichnisse sind und dst leer ist, wird dst stillschweigend ersetzt. Wenn dst ein nicht-leeres Verzeichnis ist, wird eine OSError ausgelöst. Wenn beides Dateien sind, wird dst stillschweigend ersetzt, wenn der Benutzer die Berechtigung hat. Die Operation kann auf einigen Unix-Varianten fehlschlagen, wenn src und dst auf unterschiedlichen Dateisystemen liegen. Bei Erfolg ist das Umbenennen eine atomare Operation (dies ist eine POSIX-Anforderung).

Diese Funktion kann die Angabe von src_dir_fd und/oder dst_dir_fd unterstützen, um Pfade relativ zu Verzeichnisskriptoren bereitzustellen.

Wenn Sie plattformübergreifendes Überschreiben des Ziels wünschen, verwenden Sie replace().

Löst ein Audit-Ereignis os.rename mit den Argumenten src, dst, src_dir_fd, dst_dir_fd aus.

Geändert in Version 3.3: Die Parameter src_dir_fd und dst_dir_fd wurden hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt für src und dst.

os.renames(old, new)

Rekursive Umbenennungsfunktion für Verzeichnisse oder Dateien. Funktioniert wie rename(), außer dass zuerst versucht wird, alle erforderlichen Zwischenverzeichnisse zu erstellen, um den neuen Pfadnamen gültig zu machen. Nach dem Umbenennen werden Verzeichnisse, die den rechtesten Pfadsegmenten des alten Namens entsprechen, mit removedirs() gestutzt.

Hinweis

Diese Funktion kann mit der neu erstellten Verzeichnisstruktur fehlschlagen, wenn Sie nicht über die erforderlichen Berechtigungen zum Entfernen des Blattverzeichnisses oder der Datei verfügen.

Löst ein Audit-Ereignis os.rename mit den Argumenten src, dst, src_dir_fd, dst_dir_fd aus.

Geändert in Version 3.6: Akzeptiert ein Pfad-ähnliches Objekt für old und new.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Benennt die Datei oder das Verzeichnis src in dst um. Wenn dst ein nicht-leeres Verzeichnis ist, wird eine OSError ausgelöst. Wenn dst existiert und eine Datei ist, wird sie stillschweigend überschrieben, wenn der Benutzer die Berechtigung hat. Die Operation kann fehlschlagen, wenn src und dst auf unterschiedlichen Dateisystemen liegen. Bei Erfolg ist das Umbenennen eine atomare Operation (dies ist eine POSIX-Anforderung).

Diese Funktion kann die Angabe von src_dir_fd und/oder dst_dir_fd unterstützen, um Pfade relativ zu Verzeichnisskriptoren bereitzustellen.

Löst ein Audit-Ereignis os.rename mit den Argumenten src, dst, src_dir_fd, dst_dir_fd aus.

Hinzugefügt in Version 3.3.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt für src und dst.

os.rmdir(path, *, dir_fd=None)

Entfernt (löscht) das Verzeichnis path. Wenn das Verzeichnis nicht existiert oder nicht leer ist, wird eine FileNotFoundError oder eine OSError entsprechend ausgelöst. Um ganze Verzeichnisbäume zu entfernen, kann shutil.rmtree() verwendet werden.

Diese Funktion kann Pfade relativ zu Verzeichnisskriptoren unterstützen.

Löst ein Audit-Ereignis os.rmdir mit den Argumenten path, dir_fd aus.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.scandir(path='.')

Gibt einen Iterator von os.DirEntry-Objekten zurück, die den Einträgen im Verzeichnis path entsprechen. Die Einträge werden in beliebiger Reihenfolge geliefert, und die speziellen Einträge '.' und '..' sind nicht enthalten. Wenn eine Datei nach dem Erstellen des Iterators aus dem Verzeichnis entfernt oder hinzugefügt wird, ist es unbestimmt, ob ein Eintrag für diese Datei enthalten sein wird.

Die Verwendung von scandir() anstelle von listdir() kann die Leistung von Code, der auch Datei-Typ- oder Dateiattributinformationen benötigt, erheblich steigern, da os.DirEntry-Objekte diese Informationen preisgeben, wenn das Betriebssystem sie beim Scannen eines Verzeichnisses bereitstellt. Alle Methoden von os.DirEntry können einen Systemaufruf ausführen, aber is_dir() und is_file() erfordern normalerweise nur einen Systemaufruf für symbolische Links; os.DirEntry.stat() erfordert unter Unix immer einen Systemaufruf, unter Windows jedoch nur für symbolische Links.

path kann ein Pfad-ähnliches Objekt sein. Wenn path vom Typ bytes ist (direkt oder indirekt über die PathLike-Schnittstelle), ist der Typ des name- und path-Attributs jedes os.DirEntry bytes; in allen anderen Fällen ist er vom Typ str.

Diese Funktion kann auch die Angabe von einem Dateideskriptor unterstützen; der Dateideskriptor muss sich auf ein Verzeichnis beziehen.

Löst ein Audit-Ereignis os.scandir mit dem Argument path aus.

Der Iterator scandir() unterstützt das Kontextmanager-Protokoll und verfügt über die folgende Methode

scandir.close()

Schließt den Iterator und gibt die erworbenen Ressourcen frei.

Dies wird automatisch aufgerufen, wenn der Iterator erschöpft oder garbage collected ist, oder wenn während der Iteration ein Fehler auftritt. Es ist jedoch ratsam, ihn explizit aufzurufen oder die with-Anweisung zu verwenden.

Hinzugefügt in Version 3.6.

Das folgende Beispiel zeigt eine einfache Verwendung von scandir(), um alle Dateien (ausgenommen Verzeichnisse) im angegebenen path anzuzeigen, die nicht mit '.' beginnen. Der Aufruf von entry.is_file() wird im Allgemeinen keinen zusätzlichen Systemaufruf auslösen.

with os.scandir(path) as it:
    for entry in it:
        if not entry.name.startswith('.') and entry.is_file():
            print(entry.name)

Hinweis

Auf Unix-basierten Systemen verwendet scandir() die Systemfunktionen opendir() und readdir(). Unter Windows verwendet es die Win32-Funktionen FindFirstFileW und FindNextFileW.

Hinzugefügt in Version 3.5.

Geändert in Version 3.6: Unterstützung für das Kontextmanager-Protokoll und die Methode close() hinzugefügt. Wenn ein scandir()-Iterator weder erschöpft noch explizit geschlossen wird, wird in seinem Destruktor eine ResourceWarning ausgegeben.

Die Funktion akzeptiert ein Pfad-ähnliches Objekt.

Geändert in Version 3.7: Unterstützung für Dateideskriptoren unter Unix hinzugefügt.

class os.DirEntry

Objekt, das von scandir() geliefert wird, um den Dateipfad und andere Dateiattribute eines Verzeichniseintrags anzuzeigen.

scandir() liefert so viele dieser Informationen wie möglich, ohne zusätzliche Systemaufrufe zu tätigen. Wenn ein stat()- oder lstat()-Systemaufruf erfolgt, speichert das os.DirEntry-Objekt das Ergebnis im Cache.

os.DirEntry-Instanzen sind nicht für die Speicherung in langlebigen Datenstrukturen vorgesehen; wenn Sie wissen, dass sich die Dateimetadaten geändert haben oder wenn seit dem Aufruf von scandir() viel Zeit vergangen ist, rufen Sie os.stat(entry.path) auf, um aktuelle Informationen abzurufen.

Da die Methoden von os.DirEntry Betriebssystemaufrufe tätigen können, können sie auch OSError auslösen. Wenn Sie eine sehr feinkörnige Kontrolle über Fehler benötigen, können Sie OSError beim Aufruf einer der os.DirEntry-Methoden abfangen und entsprechend behandeln.

Um direkt als Pfad-ähnliches Objekt verwendbar zu sein, implementiert os.DirEntry die Schnittstelle PathLike.

Attribute und Methoden einer Instanz von os.DirEntry sind wie folgt

name

Der Basisdateiname des Eintrags, relativ zum scandir()-Argument path.

Das Attribut name ist bytes, wenn das scandir()-Argument path vom Typ bytes ist, und andernfalls str. Verwenden Sie fsdecode(), um Byte-Dateinamen zu dekodieren.

path

Der vollständige Pfadname des Eintrags: entspricht os.path.join(scandir_path, entry.name), wobei scandir_path das scandir()-Argument path ist. Der Pfad ist nur absolut, wenn das scandir()-Argument path absolut war. Wenn das scandir()-Argument path ein Dateideskriptor war, ist das Attribut path dasselbe wie das Attribut name.

Das Attribut path ist bytes, wenn das scandir()-Argument path vom Typ bytes ist, und andernfalls str. Verwenden Sie fsdecode(), um Byte-Dateinamen zu dekodieren.

inode()

Gibt die Inode-Nummer des Eintrags zurück.

Das Ergebnis wird im os.DirEntry-Objekt zwischengespeichert. Verwenden Sie os.stat(entry.path, follow_symlinks=False).st_ino, um aktuelle Informationen abzurufen.

Beim ersten, un-gecatchten Aufruf ist unter Windows ein Systemaufruf erforderlich, unter Unix jedoch nicht.

is_dir(*, follow_symlinks=True)

Gibt True zurück, wenn dieser Eintrag ein Verzeichnis oder ein symbolischer Link ist, der auf ein Verzeichnis zeigt; gibt False zurück, wenn der Eintrag eine andere Art von Datei ist oder darauf zeigt, oder wenn er nicht mehr existiert.

Wenn follow_symlinks False ist, gibt True nur dann zurück, wenn dieser Eintrag ein Verzeichnis ist (ohne symbolische Links zu folgen); gibt False zurück, wenn der Eintrag eine andere Art von Datei ist oder nicht mehr existiert.

Das Ergebnis wird im Objekt os.DirEntry zwischengespeichert, wobei ein separater Cache für follow_symlinks True und False existiert. Rufen Sie os.stat() zusammen mit stat.S_ISDIR() auf, um aktuelle Informationen abzurufen.

Beim ersten, nicht zwischengespeicherten Aufruf ist in den meisten Fällen kein Systemaufruf erforderlich. Insbesondere für Nicht-Symlinks erfordern weder Windows noch Unix einen Systemaufruf, außer auf bestimmten Unix-Dateisystemen wie Netzwerkan-Dateisystemen, die dirent.d_type == DT_UNKNOWN zurückgeben. Wenn der Eintrag ein Symlink ist, ist ein Systemaufruf erforderlich, um dem Symlink zu folgen, es sei denn, follow_symlinks ist False.

Diese Methode kann OSError auslösen, wie z. B. PermissionError, aber FileNotFoundError wird abgefangen und nicht ausgelöst.

is_file(*, follow_symlinks=True)

Gibt True zurück, wenn dieser Eintrag eine Datei oder ein symbolischer Link zu einer Datei ist; gibt False zurück, wenn der Eintrag ein Verzeichnis oder ein anderer Nicht-Datei-Eintrag ist oder darauf zeigt, oder wenn er nicht mehr existiert.

Wenn follow_symlinks False ist, gibt True zurück, nur wenn dieser Eintrag eine Datei ist (ohne Symlinks zu folgen); gibt False zurück, wenn der Eintrag ein Verzeichnis oder ein anderer Nicht-Datei-Eintrag ist oder wenn er nicht mehr existiert.

Das Ergebnis wird im Objekt os.DirEntry zwischengespeichert. Das Caching, die durchgeführten Systemaufrufe und die ausgelösten Ausnahmen entsprechen denen von is_dir().

Gibt True zurück, wenn dieser Eintrag ein symbolischer Link ist (auch wenn er defekt ist); gibt False zurück, wenn der Eintrag auf ein Verzeichnis oder irgendeine Art von Datei zeigt oder wenn er nicht mehr existiert.

Das Ergebnis wird im Objekt os.DirEntry zwischengespeichert. Rufen Sie os.path.islink() auf, um aktuelle Informationen abzurufen.

Beim ersten, nicht zwischengespeicherten Aufruf ist in den meisten Fällen kein Systemaufruf erforderlich. Insbesondere erfordern weder Windows noch Unix einen Systemaufruf, außer auf bestimmten Unix-Dateisystemen wie Netzwerkan-Dateisystemen, die dirent.d_type == DT_UNKNOWN zurückgeben.

Diese Methode kann OSError auslösen, wie z. B. PermissionError, aber FileNotFoundError wird abgefangen und nicht ausgelöst.

is_junction()

Gibt True zurück, wenn dieser Eintrag eine Verzweigung (Junction) ist (auch wenn sie defekt ist); gibt False zurück, wenn der Eintrag auf ein reguläres Verzeichnis, irgendeine Art von Datei, einen Symlink zeigt oder wenn er nicht mehr existiert.

Das Ergebnis wird im Objekt os.DirEntry zwischengespeichert. Rufen Sie os.path.isjunction() auf, um aktuelle Informationen abzurufen.

Hinzugefügt in Version 3.12.

stat(*, follow_symlinks=True)

Gibt ein stat_result-Objekt für diesen Eintrag zurück. Diese Methode folgt standardmäßig symbolischen Links; um einen symbolischen Link zu staten, fügen Sie das Argument follow_symlinks=False hinzu.

Unter Unix erfordert diese Methode immer einen Systemaufruf. Unter Windows erfordert sie nur dann einen Systemaufruf, wenn follow_symlinks True ist und der Eintrag ein Reparse Point ist (z. B. ein symbolischer Link oder ein Verzeichnispunkt).

Unter Windows werden die Attribute st_ino, st_dev und st_nlink des stat_result immer auf Null gesetzt. Rufen Sie os.stat() auf, um diese Attribute zu erhalten.

Das Ergebnis wird im Objekt os.DirEntry zwischengespeichert, mit einem separaten Cache für follow_symlinks True und False. Rufen Sie os.stat() auf, um aktuelle Informationen abzurufen.

Beachten Sie, dass es eine gute Entsprechung zwischen mehreren Attributen und Methoden von os.DirEntry und denen von pathlib.Path gibt. Insbesondere hat das Attribut name dieselbe Bedeutung wie die Methoden is_dir(), is_file(), is_symlink(), is_junction() und stat().

Hinzugefügt in Version 3.5.

Geändert in Version 3.6: Unterstützung für die PathLike-Schnittstelle hinzugefügt. Unterstützung für bytes-Pfade unter Windows hinzugefügt.

Geändert in Version 3.12: Das Attribut st_ctime eines Stat-Ergebnisses ist unter Windows veraltet. Die Erstellungszeit der Datei ist als st_birthtime verfügbar, und in Zukunft kann st_ctime so geändert werden, dass Null oder die Metadatenänderungszeit zurückgegeben wird, falls verfügbar.

os.stat(path, *, dir_fd=None, follow_symlinks=True)

Ruft den Status einer Datei oder eines Dateideskriptors ab. Führt den stat()-Systemaufruf für den angegebenen Pfad aus. path kann als String oder Bytes angegeben werden – direkt oder indirekt über die PathLike-Schnittstelle – oder als offener Dateideskriptor. Gibt ein stat_result-Objekt zurück.

Diese Funktion folgt normalerweise Symlinks. Um einen Symlink zu staten, fügen Sie das Argument follow_symlinks=False hinzu oder verwenden Sie lstat().

Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.

Unter Windows deaktiviert die Übergabe von follow_symlinks=False das Folgen aller Namens-Surrogat-Reparse-Points, wozu Symlinks und Verzeichnispunkte gehören. Andere Arten von Reparse-Points, die nicht wie Links aussehen oder die das Betriebssystem nicht folgen kann, werden direkt geöffnet. Beim Folgen einer Kette mehrerer Links kann dies dazu führen, dass der ursprüngliche Link anstelle des Nicht-Links zurückgegeben wird, der eine vollständige Traversierung verhinderte. Um in diesem Fall Stat-Ergebnisse für den endgültigen Pfad zu erhalten, verwenden Sie die Funktion os.path.realpath(), um den Pfadnamen so weit wie möglich aufzulösen, und rufen Sie lstat() für das Ergebnis auf. Dies gilt nicht für lose Symlinks oder Junction-Punkte, die die üblichen Ausnahmen auslösen.

Beispiel

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
st_mtime=1297230027, st_ctime=1297230027)
>>> statinfo.st_size
264

Siehe auch

fstat() und lstat() Funktionen.

Geändert in Version 3.3: Die Parameter dir_fd und follow_symlinks wurden hinzugefügt, die einen Dateideskriptor anstelle eines Pfades angeben.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.8: Unter Windows werden jetzt alle Reparse-Points, die vom Betriebssystem aufgelöst werden können, verfolgt, und die Übergabe von follow_symlinks=False deaktiviert das Folgen aller Namens-Surrogat-Reparse-Points. Wenn das Betriebssystem auf einen Reparse-Point stößt, dem es nicht folgen kann, gibt stat nun die Informationen für den ursprünglichen Pfad zurück, als wäre follow_symlinks=False angegeben worden, anstatt einen Fehler auszulösen.

class os.stat_result

Objekt, dessen Attribute ungefähr den Mitgliedern der stat-Struktur entsprechen. Es wird für das Ergebnis von os.stat(), os.fstat() und os.lstat() verwendet.

Attribute

st_mode

Datei-Modus: Dateityp und Modus-Bits (Berechtigungen).

st_ino

Plattformabhängig, aber wenn ungleich Null, identifiziert die Datei eindeutig für einen gegebenen Wert von st_dev. Typischerweise

  • die Inode-Nummer unter Unix,

  • der Dateiindex unter Windows

st_dev

Identifikator des Geräts, auf dem sich diese Datei befindet.

Anzahl der harten Links.

st_uid

Benutzerkennung des Dateibesitzers.

st_gid

Gruppenkennung des Dateibesitzers.

st_size

Größe der Datei in Bytes, wenn es sich um eine reguläre Datei oder einen symbolischen Link handelt. Die Größe eines symbolischen Links ist die Länge des Pfadnamens, den er enthält, ohne ein abschließendes Null-Byte.

Zeitstempel

st_atime

Zeitpunkt des letzten Zugriffs, ausgedrückt in Sekunden.

st_mtime

Zeitpunkt der letzten Inhaltsänderung, ausgedrückt in Sekunden.

st_ctime

Zeitpunkt der letzten Metadatenänderung, ausgedrückt in Sekunden.

Geändert in Version 3.12: st_ctime ist unter Windows veraltet. Verwenden Sie st_birthtime für die Erstellungszeit der Datei. In Zukunft wird st_ctime die Zeit der letzten Metadatenänderung enthalten, wie auf anderen Plattformen.

st_atime_ns

Zeitpunkt des letzten Zugriffs, ausgedrückt in Nanosekunden als Ganzzahl.

Hinzugefügt in Version 3.3.

st_mtime_ns

Zeitpunkt der letzten Inhaltsänderung, ausgedrückt in Nanosekunden als Ganzzahl.

Hinzugefügt in Version 3.3.

st_ctime_ns

Zeitpunkt der letzten Metadatenänderung, ausgedrückt in Nanosekunden als Ganzzahl.

Hinzugefügt in Version 3.3.

Geändert in Version 3.12: st_ctime_ns ist unter Windows veraltet. Verwenden Sie st_birthtime_ns für die Erstellungszeit der Datei. In Zukunft wird st_ctime die Zeit der letzten Metadatenänderung enthalten, wie auf anderen Plattformen.

st_birthtime

Zeitpunkt der Dateierstellung, ausgedrückt in Sekunden. Dieses Attribut ist nicht immer verfügbar und kann AttributeError auslösen.

Geändert in Version 3.12: st_birthtime ist jetzt unter Windows verfügbar.

st_birthtime_ns

Zeitpunkt der Dateierstellung, ausgedrückt in Nanosekunden als Ganzzahl. Dieses Attribut ist nicht immer verfügbar und kann AttributeError auslösen.

Hinzugefügt in Version 3.12.

Hinweis

Die genaue Bedeutung und Auflösung der Attribute st_atime, st_mtime, st_ctime und st_birthtime hängt vom Betriebssystem und dem Dateisystem ab. Beispielsweise haben unter Windows-Systemen mit FAT32-Dateisystemen st_mtime eine Auflösung von 2 Sekunden und st_atime nur eine Auflösung von 1 Tag. Details finden Sie in der Dokumentation Ihres Betriebssystems.

Ebenso bieten st_atime_ns, st_mtime_ns, st_ctime_ns und st_birthtime_ns zwar immer Nanosekunden, aber viele Systeme bieten keine Nanosekundenpräzision. Auf Systemen, die Nanosekundenpräzision bieten, kann das Fließkommaobjekt, das zur Speicherung von st_atime, st_mtime, st_ctime und st_birthtime verwendet wird, nicht die gesamte Präzision beibehalten und ist daher leicht ungenau. Wenn Sie die exakten Zeitstempel benötigen, sollten Sie immer st_atime_ns, st_mtime_ns, st_ctime_ns und st_birthtime_ns verwenden.

Auf einigen Unix-Systemen (wie Linux) können auch die folgenden Attribute verfügbar sein

st_blocks

Anzahl der für die Datei zugewiesenen 512-Byte-Blöcke. Diese kann kleiner sein als st_size/512, wenn die Datei Lücken aufweist.

st_blksize

„Bevorzugte“ Blockgröße für effiziente Datei-E/A. Das Schreiben in eine Datei in kleineren Blöcken kann ein ineffizientes Lesen-Ändern-Schreiben verursachen.

st_rdev

Typ des Geräts, wenn es sich um ein Inode-Gerät handelt.

st_flags

Vom Benutzer definierte Flags für die Datei.

Auf anderen Unix-Systemen (wie FreeBSD) können die folgenden Attribute verfügbar sein (möglicherweise sind sie jedoch nur ausgefüllt, wenn root versucht, sie zu verwenden)

st_gen

Generierungsnummer der Datei.

Unter Solaris und Derivaten können auch die folgenden Attribute verfügbar sein

st_fstype

Zeichenkette, die den Typ des Dateisystems, das die Datei enthält, eindeutig identifiziert.

Auf macOS-Systemen können auch die folgenden Attribute verfügbar sein

st_rsize

Tatsächliche Größe der Datei.

st_creator

Ersteller der Datei.

st_type

Dateityp.

Unter Windows-Systemen sind auch die folgenden Attribute verfügbar

st_file_attributes

Windows-Dateiattribute: das Mitglied dwFileAttributes der BY_HANDLE_FILE_INFORMATION-Struktur, die von GetFileInformationByHandle() zurückgegeben wird. Siehe die Konstanten FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE> im stat-Modul.

Hinzugefügt in Version 3.5.

st_reparse_tag

Wenn st_file_attributes das Flag FILE_ATTRIBUTE_REPARSE_POINT gesetzt hat, enthält dieses Feld den Tag, der den Typ des Reparse-Points identifiziert. Siehe die Konstanten IO_REPARSE_TAG_* im stat-Modul.

Das Standardmodul stat definiert Funktionen und Konstanten, die nützlich sind, um Informationen aus einer stat-Struktur zu extrahieren. (Unter Windows sind einige Elemente mit Dummy-Werten gefüllt.)

Aus Kompatibilitätsgründen ist eine stat_result-Instanz auch als Tupel von mindestens 10 Ganzzahlen zugänglich, die die wichtigsten (und portabelsten) Mitglieder der stat-Struktur in der Reihenfolge st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime enthält. Weitere Elemente können von einigen Implementierungen am Ende hinzugefügt werden. Aus Kompatibilitätsgründen mit älteren Python-Versionen gibt der Zugriff auf stat_result als Tupel immer Ganzzahlen zurück.

Geändert in Version 3.5: Windows gibt nun den Dateiindex als st_ino zurück, wenn verfügbar.

Geändert in Version 3.7: Das Mitglied st_fstype wurde für Solaris/Derivate hinzugefügt.

Geändert in Version 3.8: Das Mitglied st_reparse_tag wurde unter Windows hinzugefügt.

Geändert in Version 3.8: Unter Windows identifiziert das Mitglied st_mode nun spezielle Dateien als S_IFCHR, S_IFIFO oder S_IFBLK, je nach Fall.

Geändert in Version 3.12: Unter Windows ist st_ctime veraltet. Es wird schließlich die letzte Metadatenänderungszeit enthalten, um die Konsistenz mit anderen Plattformen zu gewährleisten, enthält aber vorerst weiterhin die Erstellungszeit. Verwenden Sie st_birthtime für die Erstellungszeit.

Unter Windows kann st_ino je nach Dateisystem bis zu 128 Bit groß sein. Zuvor war es nicht größer als 64 Bit, und größere Datei-Identifikatoren wurden willkürlich gepackt.

Unter Windows gibt st_rdev keinen Wert mehr zurück. Zuvor enthielt es dasselbe wie st_dev, was falsch war.

Das Mitglied st_birthtime wurde unter Windows hinzugefügt.

os.statvfs(path)

Führt einen statvfs()-Systemaufruf für den angegebenen Pfad aus. Der Rückgabewert ist ein Objekt, dessen Attribute das Dateisystem am angegebenen Pfad beschreiben und den Mitgliedern der statvfs-Struktur entsprechen, nämlich: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax, f_fsid.

Zwei Modulkonstanten sind für die Bit-Flags des Attributs f_flag definiert: Wenn ST_RDONLY gesetzt ist, ist das Dateisystem schreibgeschützt gemountet, und wenn ST_NOSUID gesetzt ist, sind die Semantiken der Setuid/Setgid-Bits deaktiviert oder werden nicht unterstützt.

Zusätzliche Modulkonstanten sind für GNU/glibc-basierte Systeme definiert. Dies sind ST_NODEV (Zugriff auf Gerätespezialdateien verbieten), ST_NOEXEC (Ausführung von Programmen verbieten), ST_SYNCHRONOUS (Schreibvorgänge werden sofort synchronisiert), ST_MANDLOCK (erzwingbare Sperren auf einem FS zulassen), ST_WRITE (Schreiben auf Datei/Verzeichnis/Symlink), ST_APPEND (Nur-Anhäng-Datei), ST_IMMUTABLE (unveränderliche Datei), ST_NOATIME (Zugriffszeiten nicht aktualisieren), ST_NODIRATIME (Zugriffszeiten von Verzeichnissen nicht aktualisieren), ST_RELATIME (atime relativ zu mtime/ctime aktualisieren).

Diese Funktion kann die Angabe eines Dateideskriptors unterstützen.

Geändert in Version 3.2: Die Konstanten ST_RDONLY und ST_NOSUID wurden hinzugefügt.

Geändert in Version 3.3: Unterstützung für die Angabe von path als geöffneter Dateideskriptor hinzugefügt.

Geändert in Version 3.4: Die Konstanten ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS, ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME, ST_NODIRATIME und ST_RELATIME wurden hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.7: Das Attribut f_fsid wurde hinzugefügt.

os.supports_dir_fd

Ein set-Objekt, das angibt, welche Funktionen im os-Modul einen offenen Dateideskriptor für ihren dir_fd-Parameter akzeptieren. Unterschiedliche Plattformen bieten unterschiedliche Funktionen, und die zugrunde liegende Funktionalität, die Python zur Implementierung des dir_fd-Parameters verwendet, ist nicht auf allen von Python unterstützten Plattformen verfügbar. Aus Gründen der Konsistenz erlauben Funktionen, die dir_fd unterstützen, stets die Angabe des Parameters, werfen jedoch eine Ausnahme, wenn die Funktionalität verwendet wird, wenn sie lokal nicht verfügbar ist. (Die Angabe von None für dir_fd wird auf allen Plattformen immer unterstützt.)

Um zu überprüfen, ob eine bestimmte Funktion einen offenen Dateideskriptor für ihren dir_fd-Parameter akzeptiert, verwenden Sie den Operator in auf supports_dir_fd. Zum Beispiel ergibt der Ausdruck True, wenn os.stat() offene Dateideskriptoren für dir_fd auf der lokalen Plattform akzeptiert.

os.stat in os.supports_dir_fd

Derzeit funktionieren dir_fd-Parameter nur auf Unix-Plattformen; keiner von ihnen funktioniert unter Windows.

Hinzugefügt in Version 3.3.

os.supports_effective_ids

Ein set-Objekt, das angibt, ob os.access() die Angabe von True für seinen effective_ids-Parameter auf der lokalen Plattform zulässt. (Die Angabe von False für effective_ids wird auf allen Plattformen immer unterstützt.) Wenn die lokale Plattform dies unterstützt, enthält die Sammlung os.access(); andernfalls ist sie leer.

Dieser Ausdruck ergibt True, wenn os.access() effective_ids=True auf der lokalen Plattform unterstützt.

os.access in os.supports_effective_ids

Derzeit werden effective_ids nur auf Unix-Plattformen unterstützt; sie funktionieren nicht unter Windows.

Hinzugefügt in Version 3.3.

os.supports_fd

Ein set-Objekt, das angibt, welche Funktionen im os-Modul ihren path-Parameter als offenen Dateideskriptor auf der lokalen Plattform zulassen. Unterschiedliche Plattformen bieten unterschiedliche Funktionen, und die zugrunde liegende Funktionalität, die Python verwendet, um offene Dateideskriptoren als path-Argumente zu akzeptieren, ist nicht auf allen von Python unterstützten Plattformen verfügbar.

Um festzustellen, ob eine bestimmte Funktion die Angabe eines offenen Dateideskriptors für ihren path-Parameter zulässt, verwenden Sie den Operator in auf supports_fd. Zum Beispiel ergibt der Ausdruck True, wenn os.chdir() offene Dateideskriptoren für path auf Ihrer lokalen Plattform akzeptiert.

os.chdir in os.supports_fd

Hinzugefügt in Version 3.3.

Ein set-Objekt, das angibt, welche Funktionen im os-Modul False für ihren follow_symlinks-Parameter auf der lokalen Plattform akzeptieren. Unterschiedliche Plattformen bieten unterschiedliche Funktionen, und die zugrunde liegende Funktionalität, die Python verwendet, um follow_symlinks zu implementieren, ist nicht auf allen von Python unterstützten Plattformen verfügbar. Aus Gründen der Konsistenz erlauben Funktionen, die follow_symlinks unterstützen, stets die Angabe des Parameters, werfen jedoch eine Ausnahme, wenn die Funktionalität verwendet wird, wenn sie lokal nicht verfügbar ist. (Die Angabe von True für follow_symlinks wird auf allen Plattformen immer unterstützt.)

Um zu überprüfen, ob eine bestimmte Funktion False für ihren follow_symlinks-Parameter akzeptiert, verwenden Sie den Operator in auf supports_follow_symlinks. Zum Beispiel ergibt der Ausdruck True, wenn Sie beim Aufruf von os.stat() auf der lokalen Plattform follow_symlinks=False angeben können.

os.stat in os.supports_follow_symlinks

Hinzugefügt in Version 3.3.

Erstellt einen symbolischen Link, der auf src zeigt und dst genannt wird.

Unter Windows repräsentiert ein Symlink entweder eine Datei oder ein Verzeichnis und passt sich nicht dynamisch an das Ziel an. Wenn das Ziel vorhanden ist, wird der Typ des Symlinks so erstellt, dass er übereinstimmt. Andernfalls wird der Symlink als Verzeichnis erstellt, wenn target_is_directory True ist, oder als Dateisymlink (Standard). Auf Nicht-Windows-Plattformen wird target_is_directory ignoriert.

Diese Funktion kann Pfade relativ zu Verzeichnisskriptoren unterstützen.

Hinweis

Auf neueren Versionen von Windows 10 können nicht privilegierte Konten Symlinks erstellen, wenn der Entwicklermodus aktiviert ist. Wenn der Entwicklermodus nicht verfügbar/aktiviert ist, ist das SeCreateSymbolicLinkPrivilege-Privileg erforderlich, oder der Prozess muss als Administrator ausgeführt werden.

OSError wird ausgelöst, wenn die Funktion von einem nicht privilegierten Benutzer aufgerufen wird.

Löst ein Audit-Ereignis os.symlink mit den Argumenten src, dst, dir_fd aus.

Verfügbarkeit: Unix, Windows.

Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.

Geändert in Version 3.2: Unterstützung für Windows 6.0 (Vista) symbolische Links hinzugefügt.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt, und target_is_directory ist nun auf Nicht-Windows-Plattformen zulässig.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt für src und dst.

Geändert in Version 3.8: Unterstützung für unelevated Symlinks unter Windows mit Entwicklermodus hinzugefügt.

os.sync()

Erzwingt das Schreiben aller Daten auf die Festplatte.

Hinzugefügt in Version 3.3.

os.truncate(path, length)

Schneidet die Datei, die path entspricht, auf eine maximale Größe von length Bytes ab.

Diese Funktion kann die Angabe eines Dateideskriptors unterstützen.

Löst ein Audit-Ereignis os.truncate mit den Argumenten path, length aus.

Verfügbarkeit: Unix, Windows.

Hinzugefügt in Version 3.3.

Geändert in Version 3.5: Unterstützung für Windows hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Entfernt (löscht) die Datei path. Diese Funktion ist semantisch identisch mit remove(); der Name unlink ist sein traditioneller Unix-Name. Weitere Informationen finden Sie in der Dokumentation für remove().

Löst ein Audit-Ereignis os.remove mit den Argumenten path, dir_fd aus.

Geändert in Version 3.3: Der Parameter dir_fd wurde hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

Setzt die Zugriffs- und Änderungszeiten der durch path angegebenen Datei.

utime() nimmt zwei optionale Parameter entgegen: times und ns. Diese geben die Zeiten an, die für path gesetzt werden, und werden wie folgt verwendet:

  • Wenn ns angegeben ist, muss es ein 2-Tupel der Form (atime_ns, mtime_ns) sein, wobei jedes Element eine Ganzzahl ist, die Nanosekunden ausdrückt.

  • Wenn times nicht None ist, muss es ein 2-Tupel der Form (atime, mtime) sein, wobei jedes Element eine Ganzzahl oder Fließkommazahl ist, die Sekunden ausdrückt.

  • Wenn times None ist und ns nicht angegeben ist, ist dies gleichbedeutend mit der Angabe von ns=(atime_ns, mtime_ns), wobei beide Zeiten die aktuelle Zeit sind.

Es ist ein Fehler, Tupel sowohl für times als auch für ns anzugeben.

Beachten Sie, dass die genauen Zeiten, die Sie hier festlegen, möglicherweise nicht bei einem nachfolgenden stat()-Aufruf zurückgegeben werden, abhängig von der Auflösung, mit der Ihr Betriebssystem Zugriffs- und Änderungszeiten aufzeichnet; siehe stat(). Der beste Weg, genaue Zeiten zu erhalten, ist die Verwendung der Felder st_atime_ns und st_mtime_ns aus dem Ergebnisobjekt von os.stat() mit dem Parameter ns für utime().

Diese Funktion kann die Angabe von einem Dateideskriptor, relativen Pfaden zu Verzeichnisdeskriptoren und das Nicht-Folgen von Symlinks unterstützen.

Löst ein Audit-Ereignis os.utime mit den Argumenten path, times, ns, dir_fd aus.

Geändert in Version 3.3: Unterstützung für die Angabe von path als offenen Dateideskriptor sowie die Parameter dir_fd, follow_symlinks und ns hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.walk(top, topdown=True, onerror=None, followlinks=False)

Generiert die Dateinamen in einem Verzeichnisbaum, indem der Baum von oben nach unten oder von unten nach oben durchlaufen wird. Für jedes Verzeichnis im Baum, der im Verzeichnis top verwurzelt ist (einschließlich top selbst), wird ein 3-Tupel (dirpath, dirnames, filenames) generiert.

dirpath ist eine Zeichenkette, der Pfad zum Verzeichnis. dirnames ist eine Liste der Namen der Unterverzeichnisse in dirpath (einschließlich Symlinks zu Verzeichnissen und ausschließend '.' und '..'). filenames ist eine Liste der Namen der Nicht-Verzeichnisfiles in dirpath. Beachten Sie, dass die Namen in den Listen keine Pfadkomponenten enthalten. Um einen vollständigen Pfad (der mit top beginnt) zu einer Datei oder einem Verzeichnis in dirpath zu erhalten, verwenden Sie os.path.join(dirpath, name). Ob die Listen sortiert sind, hängt vom Dateisystem ab. Wenn eine Datei während der Generierung der Listen aus dem Verzeichnis dirpath entfernt oder hinzugefügt wird, ist es unbestimmt, ob ein Name für diese Datei enthalten sein wird.

Wenn das optionale Argument topdown True ist oder nicht angegeben wird, wird das Tupel für ein Verzeichnis vor den Tupeln für alle seine Unterverzeichnisse generiert (Verzeichnisse werden von oben nach unten generiert). Wenn topdown False ist, wird das Tupel für ein Verzeichnis nach den Tupeln für alle seine Unterverzeichnisse generiert (Verzeichnisse werden von unten nach oben generiert). Unabhängig vom Wert von topdown wird die Liste der Unterverzeichnisse abgerufen, bevor die Tupel für das Verzeichnis und seine Unterverzeichnisse generiert werden.

Wenn topdown True ist, kann der Aufrufer die Liste dirnames direkt ändern (vielleicht mit del oder Slice-Zuweisung), und walk() wird nur in die Unterverzeichnisse rekursiv aufgerufen, deren Namen in dirnames verbleiben; dies kann verwendet werden, um die Suche zu beschneiden, eine bestimmte Reihenfolge des Besuchs festzulegen oder sogar walk() über vom Aufrufer erstellte oder umbenannte Verzeichnisse zu informieren, bevor es walk() wieder aufnimmt. Das Ändern von dirnames, wenn topdown False ist, hat keine Auswirkungen auf das Verhalten des Durchlaufs, da im Bottom-up-Modus die Verzeichnisse in dirnames vor dem Generieren von dirpath selbst abgerufen werden.

Standardmäßig werden Fehler vom scandir()-Aufruf ignoriert. Wenn das optionale Argument onerror angegeben ist, sollte es eine Funktion sein; sie wird mit einem Argument, einer OSError-Instanz, aufgerufen. Sie kann den Fehler melden, um mit dem Durchlauf fortzufahren, oder die Ausnahme auslösen, um den Durchlauf abzubrechen. Beachten Sie, dass der Dateiname als Attribut filename des Ausnahmeobjekts verfügbar ist.

Standardmäßig durchläuft walk() keine symbolischen Links, die auf Verzeichnisse zeigen. Setzen Sie followlinks auf True, um Verzeichnisse zu besuchen, auf die Symlinks verweisen, auf Systemen, die dies unterstützen.

Hinweis

Seien Sie sich bewusst, dass das Setzen von followlinks auf True zu unendlicher Rekursion führen kann, wenn ein Link auf ein übergeordnetes Verzeichnis von sich selbst verweist. walk() verfolgt nicht die bereits besuchten Verzeichnisse.

Hinweis

Wenn Sie einen relativen Pfadnamen übergeben, ändern Sie das aktuelle Arbeitsverzeichnis nicht zwischen Wiederaufnahmen von walk(). walk() ändert niemals das aktuelle Verzeichnis und geht davon aus, dass sein Aufrufer dies auch nicht tut.

Dieses Beispiel zeigt die Anzahl der Bytes, die von Nicht-Verzeichnisdateien in jedem Verzeichnis unterhalb des Startverzeichnisses belegt werden, außer dass es nicht in Unterverzeichnissen __pycache__ nachsucht.

import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/xml'):
    print(root, "consumes", end=" ")
    print(sum(getsize(join(root, name)) for name in files), end=" ")
    print("bytes in", len(files), "non-directory files")
    if '__pycache__' in dirs:
        dirs.remove('__pycache__')  # don't visit __pycache__ directories

Im nächsten Beispiel (einfache Implementierung von shutil.rmtree()) ist das Durchlaufen des Baumes von unten nach oben unerlässlich; rmdir() erlaubt das Löschen eines Verzeichnisses nicht, bevor das Verzeichnis leer ist.

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))
os.rmdir(top)

Löst ein Audit-Ereignis os.walk mit den Argumenten top, topdown, onerror, followlinks aus.

Geändert in Version 3.5: Diese Funktion ruft nun os.scandir() anstelle von os.listdir() auf, was sie durch Reduzierung der Anzahl der Aufrufe von os.stat() schneller macht.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

Dies verhält sich exakt wie walk(), mit der Ausnahme, dass es ein 4-Tupel (dirpath, dirnames, filenames, dirfd) liefert und dir_fd unterstützt.

dirpath, dirnames und filenames sind identisch mit der Ausgabe von walk(), und dirfd ist ein Dateideskriptor, der auf das Verzeichnis dirpath verweist.

Diese Funktion unterstützt immer Pfade relativ zu Verzeichnissdeskriptoren und das Nicht-Folgen von Symlinks. Beachten Sie jedoch, dass im Gegensatz zu anderen Funktionen der Standardwert für follow_symlinks bei fwalk() False ist.

Hinweis

Da fwalk() Dateideskriptoren liefert, sind diese nur bis zur nächsten Iteration gültig. Sie sollten sie daher duplizieren (z. B. mit dup()), wenn Sie sie länger aufbewahren möchten.

Dieses Beispiel zeigt die Anzahl der Bytes, die von Nicht-Verzeichnisdateien in jedem Verzeichnis unterhalb des Startverzeichnisses belegt werden, außer dass es nicht in Unterverzeichnissen __pycache__ nachsucht.

import os
for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'):
    print(root, "consumes", end=" ")
    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
          end=" ")
    print("bytes in", len(files), "non-directory files")
    if '__pycache__' in dirs:
        dirs.remove('__pycache__')  # don't visit __pycache__ directories

Im nächsten Beispiel ist das Durchlaufen des Baumes von unten nach oben unerlässlich: rmdir() erlaubt das Löschen eines Verzeichnisses nicht, bevor das Verzeichnis leer ist.

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
    for name in files:
        os.unlink(name, dir_fd=rootfd)
    for name in dirs:
        os.rmdir(name, dir_fd=rootfd)

Löst ein Audit-Ereignis os.fwalk mit den Argumenten top, topdown, onerror, follow_symlinks, dir_fd aus.

Hinzugefügt in Version 3.3.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Geändert in Version 3.7: Unterstützung für bytes-Pfade hinzugefügt.

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

Erstellt eine anonyme Datei und gibt einen Dateideskriptor zurück, der auf sie verweist. flags muss einer der systemverfügbaren os.MFD_*-Konstanten sein (oder eine bitweise OR-Kombination davon). Standardmäßig ist der neue Dateideskriptor nicht übertragbar.

Der in name angegebene Name wird als Dateiname verwendet und wird als Ziel des entsprechenden symbolischen Links im Verzeichnis /proc/self/fd/ angezeigt. Der angezeigte Name wird immer mit memfd: präfixiert und dient nur zu Debugging-Zwecken. Namen beeinflussen das Verhalten des Dateideskriptors nicht, und daher können mehrere Dateien denselben Namen ohne Nebenwirkungen haben.

Verfügbarkeit: Linux >= 3.17 mit glibc >= 2.27.

Hinzugefügt in Version 3.8.

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

Diese Flags können an memfd_create() übergeben werden.

Verfügbarkeit: Linux >= 3.17 mit glibc >= 2.27

Die Flags MFD_HUGE* sind erst seit Linux 4.14 verfügbar.

Hinzugefügt in Version 3.8.

os.eventfd(initval[, flags=os.EFD_CLOEXEC])

Erstellt und gibt einen Event-Datei-Deskriptor zurück. Die Datei-Deskriptoren unterstützen rohes read() und write() mit einer Puffergröße von 8, select(), poll() und ähnliches. Siehe Manpage eventfd(2) für weitere Informationen. Standardmäßig ist der neue Datei-Deskriptor nicht vererbbar.

initval ist der Anfangswert des Event-Zählers. Der Anfangswert muss eine vorzeichenlose 32-Bit-Ganzzahl sein. Beachten Sie, dass der Anfangswert auf eine vorzeichenlose 32-Bit-Ganzzahl begrenzt ist, obwohl der Event-Zähler eine vorzeichenlose 64-Bit-Ganzzahl mit einem Maximalwert von 264-2 ist.

flags können aus EFD_CLOEXEC, EFD_NONBLOCK und EFD_SEMAPHORE konstruiert werden.

Wenn EFD_SEMAPHORE angegeben ist und der Event-Zähler nicht Null ist, gibt eventfd_read() 1 zurück und dekrementiert den Zähler um eins.

Wenn EFD_SEMAPHORE nicht angegeben ist und der Event-Zähler nicht Null ist, gibt eventfd_read() den aktuellen Wert des Event-Zählers zurück und setzt den Zähler auf Null zurück.

Wenn der Event-Zähler Null ist und EFD_NONBLOCK nicht angegeben ist, blockiert eventfd_read().

eventfd_write() inkrementiert den Event-Zähler. Schreiben blockiert, wenn die Schreiboperation den Zähler auf einen Wert größer als 264-2 erhöhen würde.

Beispiel

import os

# semaphore with start value '1'
fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
try:
    # acquire semaphore
    v = os.eventfd_read(fd)
    try:
        do_work()
    finally:
        # release semaphore
        os.eventfd_write(fd, v)
finally:
    os.close(fd)

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.10.

os.eventfd_read(fd)

Liest den Wert von einem eventfd() Datei-Deskriptor und gibt eine vorzeichenlose 64-Bit-Ganzzahl zurück. Die Funktion verifiziert nicht, dass fd ein eventfd() ist.

Verfügbarkeit: Linux >= 2.6.27

Hinzugefügt in Version 3.10.

os.eventfd_write(fd, value)

Fügt einen Wert zu einem eventfd() Datei-Deskriptor hinzu. value muss eine vorzeichenlose 64-Bit-Ganzzahl sein. Die Funktion verifiziert nicht, dass fd ein eventfd() ist.

Verfügbarkeit: Linux >= 2.6.27

Hinzugefügt in Version 3.10.

os.EFD_CLOEXEC

Setzt das Close-on-exec-Flag für den neuen eventfd() Datei-Deskriptor.

Verfügbarkeit: Linux >= 2.6.27

Hinzugefügt in Version 3.10.

os.EFD_NONBLOCK

Setzt das O_NONBLOCK Statusflag für den neuen eventfd() Datei-Deskriptor.

Verfügbarkeit: Linux >= 2.6.27

Hinzugefügt in Version 3.10.

os.EFD_SEMAPHORE

Bietet semaphorähnliche Semantik für Lesevorgänge von einem eventfd() Datei-Deskriptor. Beim Lesen wird der interne Zähler um eins dekrementiert.

Verfügbarkeit: Linux >= 2.6.30

Hinzugefügt in Version 3.10.

Timer-Datei-Deskriptoren

Hinzugefügt in Version 3.13.

Diese Funktionen bieten Unterstützung für die Timer-Datei-Deskriptor API von Linux. Natürlich sind sie alle nur unter Linux verfügbar.

os.timerfd_create(clockid, /, *, flags=0)

Erstellt und gibt einen Timer-Datei-Deskriptor (timerfd) zurück.

Der von timerfd_create() zurückgegebene Datei-Deskriptor unterstützt

Die read()-Methode des Datei-Deskriptors kann mit einer Puffergröße von 8 aufgerufen werden. Wenn der Timer bereits ein- oder mehrmals abgelaufen ist, gibt read() die Anzahl der Abläufe in der Byte-Reihenfolge des Hosts zurück, die mit int.from_bytes(x, byteorder=sys.byteorder) in einen int konvertiert werden können.

select() und poll() können verwendet werden, um zu warten, bis der Timer abläuft und der Datei-Deskriptor lesbar ist.

clockid muss eine gültige Clock-ID sein, wie im time-Modul definiert

Wenn clockid time.CLOCK_REALTIME ist, wird eine einstellbare systemweite Echtzeituhr verwendet. Wenn die Systemuhr geändert wird, müssen die Timer-Einstellungen aktualisiert werden. Um den Timer bei einer Änderung der Systemuhr abzubrechen, siehe TFD_TIMER_CANCEL_ON_SET.

Wenn clockid time.CLOCK_MONOTONIC ist, wird eine nicht einstellbare, monoton steigende Uhr verwendet. Auch wenn die Systemuhr geändert wird, bleiben die Timer-Einstellungen unberührt.

Wenn clockid time.CLOCK_BOOTTIME ist, ist dies dasselbe wie time.CLOCK_MONOTONIC, mit der Ausnahme, dass die Zeit, in der das System ruhte, mit einbezogen wird.

Das Verhalten des Datei-Deskriptors kann durch Angabe eines flags-Wertes modifiziert werden. Alle der folgenden Variablen können verwendet werden, kombiniert mit einem bitweisen ODER (dem | Operator)

Wenn TFD_NONBLOCK nicht als Flag gesetzt ist, blockiert read(), bis der Timer abläuft. Wenn es als Flag gesetzt ist, blockiert read() nicht, aber wenn seit dem letzten Aufruf von read kein Ablauf stattgefunden hat, löst read() eine OSError aus, wobei errno auf errno.EAGAIN gesetzt ist.

TFD_CLOEXEC wird von Python immer automatisch gesetzt.

Der Datei-Deskriptor muss mit os.close() geschlossen werden, wenn er nicht mehr benötigt wird, da sonst der Datei-Deskriptor leckend ist.

Siehe auch

Die Manpage timerfd_create(2).

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.timerfd_settime(fd, /, *, flags=flags, initial=0.0, interval=0.0)

Ändert den internen Timer eines Timer-Datei-Deskriptors. Diese Funktion operiert auf demselben Intervalltimer wie timerfd_settime_ns().

fd muss ein gültiger Timer-Datei-Deskriptor sein.

Das Verhalten des Timers kann durch Angabe eines flags-Wertes modifiziert werden. Alle der folgenden Variablen können verwendet werden, kombiniert mit einem bitweisen ODER (dem | Operator)

Der Timer wird deaktiviert, indem initial auf Null (0) gesetzt wird. Wenn initial größer oder gleich Null ist, wird der Timer aktiviert. Wenn initial kleiner als Null ist, wird eine OSError-Ausnahme ausgelöst, wobei errno auf errno.EINVAL gesetzt ist.

Standardmäßig feuert der Timer, wenn initial Sekunden verstrichen sind. (Wenn initial Null ist, feuert der Timer sofort.)

Wenn jedoch das Flag TFD_TIMER_ABSTIME gesetzt ist, feuert der Timer, wenn die Uhr des Timers (gesetzt durch clockid in timerfd_create()) initial Sekunden erreicht.

Das Intervall des Timers wird durch den float interval gesetzt. Wenn interval Null ist, feuert der Timer nur einmal, nach dem ersten Ablauf. Wenn interval größer als Null ist, feuert der Timer jedes Mal, wenn interval Sekunden seit dem vorherigen Ablauf vergangen sind. Wenn interval kleiner als Null ist, wird eine OSError mit errno auf errno.EINVAL ausgelöst.

Wenn das Flag TFD_TIMER_CANCEL_ON_SET zusammen mit TFD_TIMER_ABSTIME gesetzt ist und die Uhr für diesen Timer time.CLOCK_REALTIME ist, wird der Timer als abbrechbar markiert, wenn die Echtzeituhr diskontinuierlich geändert wird. Das Lesen vom Deskriptor wird mit dem Fehler ECANCELED abgebrochen.

Linux verwaltet die Systemuhr als UTC. Eine Umstellung auf Sommerzeit/Winterzeit erfolgt durch reine Änderung des Zeitoffsets und verursacht keine diskontinuierliche Änderung der Systemuhr.

Diskontinuierliche Änderungen der Systemuhr werden durch folgende Ereignisse verursacht

  • settimeofday

  • clock_settime

  • Setzen des Systemdatums und der Systemzeit mit dem Befehl date

Gibt ein Tupel mit zwei Elementen zurück: (next_expiration, interval) vom vorherigen Timerzustand, bevor diese Funktion ausgeführt wurde.

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.timerfd_settime_ns(fd, /, *, flags=0, initial=0, interval=0)

Ähnlich wie timerfd_settime(), aber verwendet Zeit in Nanosekunden. Diese Funktion operiert auf demselben Intervalltimer wie timerfd_settime().

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.timerfd_gettime(fd, /)

Gibt ein Tupel aus zwei Floats zurück: (next_expiration, interval).

next_expiration bezeichnet die relative Zeit bis zum nächsten Ablauf des Timers, unabhängig davon, ob das Flag TFD_TIMER_ABSTIME gesetzt ist.

interval bezeichnet das Intervall des Timers. Wenn Null, feuert der Timer nur einmal, nachdem next_expiration Sekunden vergangen sind.

Siehe auch

timerfd_gettime(2)

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.timerfd_gettime_ns(fd, /)

Ähnlich wie timerfd_gettime(), gibt aber die Zeit in Nanosekunden zurück.

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.TFD_NONBLOCK

Ein Flag für die Funktion timerfd_create(), das das Statusflag O_NONBLOCK für den neuen Timer-Datei-Deskriptor setzt. Wenn TFD_NONBLOCK nicht als Flag gesetzt ist, blockiert read().

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.TFD_CLOEXEC

Ein Flag für die Funktion timerfd_create(). Wenn TFD_CLOEXEC als Flag gesetzt ist, wird das Close-on-exec-Flag für den neuen Datei-Deskriptor gesetzt.

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.TFD_TIMER_ABSTIME

Ein Flag für die Funktionen timerfd_settime() und timerfd_settime_ns(). Wenn dieses Flag gesetzt ist, wird initial als absoluter Wert auf der Uhr des Timers (in UTC-Sekunden oder Nanosekunden seit der Unix-Epoche) interpretiert.

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

os.TFD_TIMER_CANCEL_ON_SET

Ein Flag für die Funktionen timerfd_settime() und timerfd_settime_ns() zusammen mit TFD_TIMER_ABSTIME. Der Timer wird abgebrochen, wenn sich die Zeit der zugrunde liegenden Uhr diskontinuierlich ändert.

Verfügbarkeit: Linux >= 2.6.27 mit glibc >= 2.8

Hinzugefügt in Version 3.13.

Erweiterte Linux-Attribute

Hinzugefügt in Version 3.3.

Diese Funktionen sind alle nur unter Linux verfügbar.

os.getxattr(path, attribute, *, follow_symlinks=True)

Gibt den Wert des erweiterten Dateisystemattributs attribute für path zurück. attribute kann Bytes oder str sein (direkt oder indirekt über die PathLike-Schnittstelle). Wenn es str ist, wird es mit der Dateisystemkodierung codiert.

Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.

Löst ein Auditing-Ereignis os.getxattr mit den Argumenten path, attribute aus.

Geändert in Version 3.6: Akzeptiert ein Pfad-ähnliches Objekt für path und attribute.

os.listxattr(path=None, *, follow_symlinks=True)

Gibt eine Liste der erweiterten Dateisystemattribute für path zurück. Die Attribute in der Liste werden als Strings dargestellt, die mit der Dateisystemkodierung dekodiert wurden. Wenn path None ist, untersucht listxattr() das aktuelle Verzeichnis.

Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.

Löst ein Auditing-Ereignis os.listxattr mit dem Argument path aus.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os.removexattr(path, attribute, *, follow_symlinks=True)

Entfernt das erweiterte Dateisystemattribut attribute von path. attribute sollte Bytes oder str sein (direkt oder indirekt über die PathLike-Schnittstelle). Wenn es ein String ist, wird es mit der Dateisystemkodierung und Fehlerbehandlungsroutine codiert.

Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.

Löst ein Auditing-Ereignis os.removexattr mit den Argumenten path, attribute aus.

Geändert in Version 3.6: Akzeptiert ein Pfad-ähnliches Objekt für path und attribute.

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

Setzt das erweiterte Dateisystemattribut attribute auf path auf den Wert value. attribute muss Bytes oder str ohne eingebettete NULs sein (direkt oder indirekt über die PathLike-Schnittstelle). Wenn es str ist, wird es mit der Dateisystemkodierung und Fehlerbehandlungsroutine codiert. flags kann XATTR_REPLACE oder XATTR_CREATE sein. Wenn XATTR_REPLACE angegeben ist und das Attribut nicht existiert, wird ENODATA ausgelöst. Wenn XATTR_CREATE angegeben ist und das Attribut bereits existiert, wird das Attribut nicht erstellt und EEXISTS wird ausgelöst.

Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.

Hinweis

Ein Fehler in Linux-Kernelversionen kleiner als 2.6.39 führte dazu, dass das Argument flags auf einigen Dateisystemen ignoriert wurde.

Löst ein Audit-Ereignis os.setxattr mit den Argumenten path, attribute, value, flags aus.

Geändert in Version 3.6: Akzeptiert ein Pfad-ähnliches Objekt für path und attribute.

os.XATTR_SIZE_MAX

Die maximale Größe, die der Wert eines erweiterten Attributs haben kann. Derzeit sind dies unter Linux 64 KiB.

os.XATTR_CREATE

Dies ist ein möglicher Wert für das Argument flags in setxattr(). Es gibt an, dass die Operation ein Attribut erstellen muss.

os.XATTR_REPLACE

Dies ist ein möglicher Wert für das Argument flags in setxattr(). Es gibt an, dass die Operation ein vorhandenes Attribut ersetzen muss.

Prozessverwaltung

Diese Funktionen können zum Erstellen und Verwalten von Prozessen verwendet werden.

Die verschiedenen exec*-Funktionen nehmen eine Liste von Argumenten für das neue Programm entgegen, das in den Prozess geladen wird. In jedem Fall wird das erste dieser Argumente als eigener Name an das neue Programm übergeben, anstatt als Argument, das ein Benutzer möglicherweise in einer Befehlszeile eingegeben hat. Für den C-Programmierer ist dies argv[0], das an die main()-Funktion eines Programms übergeben wird. Zum Beispiel gibt os.execv('/bin/echo', ['foo', 'bar']) nur bar auf der Standardausgabe aus; foo scheint ignoriert zu werden.

os.abort()

Sendet ein SIGABRT-Signal an den aktuellen Prozess. Unter Unix erzeugt das Standardverhalten einen Core Dump; unter Windows gibt der Prozess sofort einen Exit-Code von 3 zurück. Beachten Sie, dass der Aufruf dieser Funktion den mit signal.signal() registrierten Python-Signalhandler für SIGABRT nicht aufruft.

os.add_dll_directory(path)

Fügt einen Pfad zum DLL-Suchpfad hinzu.

Dieser Suchpfad wird verwendet, wenn Abhängigkeiten für importierte Erweiterungsmodule aufgelöst werden (das Modul selbst wird über sys.path aufgelöst) und auch von ctypes.

Entfernen Sie das Verzeichnis, indem Sie close() für das zurückgegebene Objekt aufrufen oder es in einer with-Anweisung verwenden.

Siehe die Microsoft-Dokumentation für weitere Informationen über das Laden von DLLs.

Löst ein Audit-Ereignis os.add_dll_directory mit dem Argument path aus.

Verfügbarkeit: Windows.

Hinzugefügt in Version 3.8: Frühere Versionen von CPython lösten DLLs mit dem Standardverhalten für den aktuellen Prozess auf. Dies führte zu Inkonsistenzen, z. B. nur manchmal bei der Suche nach PATH oder dem aktuellen Arbeitsverzeichnis, und Betriebssystemfunktionen wie AddDllDirectory hatten keine Auswirkungen.

In 3.8 überschreiben die beiden primären Methoden zum Laden von DLLs nun explizit das prozessweite Verhalten, um Konsistenz zu gewährleisten. Beachten Sie die Portierungsnotizen für Informationen zur Aktualisierung von Bibliotheken.

os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)

Diese Funktionen führen alle ein neues Programm aus, das den aktuellen Prozess ersetzt; sie kehren nicht zurück. Unter Unix wird die neue ausführbare Datei in den aktuellen Prozess geladen und hat dieselbe Prozess-ID wie der Aufrufer. Fehler werden als OSError-Ausnahmen gemeldet.

Der aktuelle Prozess wird sofort ersetzt. Offene Dateiobjekte und Deskriptoren werden nicht geleert. Wenn sich also möglicherweise Daten in diesen geöffneten Dateien befinden, sollten Sie diese mit sys.stdout.flush() oder os.fsync() leeren, bevor Sie eine exec*-Funktion aufrufen.

Die Varianten "l" und "v" der exec*-Funktionen unterscheiden sich in der Übergabe von Befehlszeilenargumenten. Die "l"-Varianten sind vielleicht am einfachsten zu handhaben, wenn die Anzahl der Parameter beim Schreiben des Codes feststeht; die einzelnen Parameter werden einfach zu zusätzlichen Parametern der execl*()-Funktionen. Die "v"-Varianten sind gut, wenn die Anzahl der Parameter variabel ist, wobei die Argumente in einer Liste oder einem Tupel als args-Parameter übergeben werden. In beiden Fällen sollten die Argumente für den Kindprozess mit dem Namen des auszuführenden Befehls beginnen, dies wird jedoch nicht erzwungen.

Die Varianten, die ein "p" am Ende enthalten (execlp(), execlpe(), execvp() und execvpe()), verwenden die Umgebungsvariable PATH, um die Programmdatei zu finden. Wenn die Umgebung ersetzt wird (mit einer der exec*e-Varianten, die im nächsten Absatz besprochen werden), wird die neue Umgebung als Quelle für die Variable PATH verwendet. Die anderen Varianten, execl(), execle(), execv() und execve(), verwenden die PATH-Variable nicht, um die ausführbare Datei zu finden; path muss einen geeigneten absoluten oder relativen Pfad enthalten. Relative Pfade müssen mindestens einen Schrägstrich enthalten, auch unter Windows, da einfache Namen nicht aufgelöst werden.

Für execle(), execlpe(), execve() und execvpe() (beachten Sie, dass diese alle auf "e" enden) muss der env-Parameter eine Abbildung sein, die zur Definition der Umgebungsvariablen für den neuen Prozess verwendet wird (diese ersetzen die Umgebung des aktuellen Prozesses); die Funktionen execl(), execlp(), execv() und execvp() bewirken alle, dass der neue Prozess die Umgebung des aktuellen Prozesses erbt.

Für execve() kann auf einigen Plattformen path auch als offener Dateideskriptor angegeben werden. Diese Funktionalität ist auf Ihrer Plattform möglicherweise nicht unterstützt; Sie können mit os.supports_fd prüfen, ob sie verfügbar ist oder nicht. Wenn sie nicht verfügbar ist, wird bei der Verwendung eine NotImplementedError ausgelöst.

Löst ein Audit-Ereignis os.exec mit den Argumenten path, args, env aus.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.

Geändert in Version 3.3: Unterstützung für die Angabe von path als geöffneter Dateideskriptor für execve() hinzugefügt.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

os._exit(n)

Beendet den Prozess mit dem Status n, ohne Cleanup-Handler aufzurufen, stdio-Puffer zu leeren usw.

Hinweis

Der Standardweg zum Beenden ist sys.exit(n). _exit() sollte normalerweise nur im Kindprozess nach einem fork() verwendet werden.

Die folgenden Exit-Codes sind definiert und können mit _exit() verwendet werden, obwohl sie nicht erforderlich sind. Sie werden typischerweise für Systemprogramme verwendet, die in Python geschrieben sind, wie z. B. das externe Befehlsübermittlungsprogramm eines Mailservers.

Hinweis

Einige davon sind möglicherweise nicht auf allen Unix-Plattformen verfügbar, da es einige Variationen gibt. Diese Konstanten sind dort definiert, wo sie von der zugrundeliegenden Plattform definiert werden.

os.EX_OK

Exit-Code, der bedeutet, dass kein Fehler aufgetreten ist. Kann von manchen Plattformen aus dem definierten Wert von EXIT_SUCCESS übernommen werden. Hat im Allgemeinen den Wert Null.

Verfügbarkeit: Unix, Windows.

os.EX_USAGE

Exit-Code, der bedeutet, dass der Befehl falsch verwendet wurde, z. B. wenn die falsche Anzahl von Argumenten angegeben wurde.

Verfügbarkeit: Unix, nicht WASI.

os.EX_DATAERR

Exit-Code, der bedeutet, dass die Eingabedaten falsch waren.

Verfügbarkeit: Unix, nicht WASI.

os.EX_NOINPUT

Exit-Code, der bedeutet, dass eine Eingabedatei nicht existierte oder nicht gelesen werden konnte.

Verfügbarkeit: Unix, nicht WASI.

os.EX_NOUSER

Exit-Code, der bedeutet, dass ein angegebener Benutzer nicht existierte.

Verfügbarkeit: Unix, nicht WASI.

os.EX_NOHOST

Exit-Code, der bedeutet, dass ein angegebener Host nicht existierte.

Verfügbarkeit: Unix, nicht WASI.

os.EX_UNAVAILABLE

Exit-Code, der bedeutet, dass ein erforderlicher Dienst nicht verfügbar ist.

Verfügbarkeit: Unix, nicht WASI.

os.EX_SOFTWARE

Exit-Code, der bedeutet, dass ein interner Softwarefehler erkannt wurde.

Verfügbarkeit: Unix, nicht WASI.

os.EX_OSERR

Exit-Code, der bedeutet, dass ein Betriebssystemfehler erkannt wurde, z. B. die Unfähigkeit, einen Prozess zu forken oder eine Pipe zu erstellen.

Verfügbarkeit: Unix, nicht WASI.

os.EX_OSFILE

Exit-Code, der bedeutet, dass eine Systemdatei nicht existierte, nicht geöffnet werden konnte oder ein anderer Fehler aufgetreten ist.

Verfügbarkeit: Unix, nicht WASI.

os.EX_CANTCREAT

Exit-Code, der bedeutet, dass eine vom Benutzer angegebene Ausgabedatei nicht erstellt werden konnte.

Verfügbarkeit: Unix, nicht WASI.

os.EX_IOERR

Exit-Code, der bedeutet, dass bei der E/A mit einer Datei ein Fehler aufgetreten ist.

Verfügbarkeit: Unix, nicht WASI.

os.EX_TEMPFAIL

Exit-Code, der bedeutet, dass ein temporärer Fehler aufgetreten ist. Dies deutet auf etwas hin, das möglicherweise kein Fehler ist, wie z. B. eine Netzwerkverbindung, die bei einer wiederholbaren Operation nicht hergestellt werden konnte.

Verfügbarkeit: Unix, nicht WASI.

os.EX_PROTOCOL

Exit-Code, der bedeutet, dass ein Protokollaustausch illegal, ungültig oder unverstanden war.

Verfügbarkeit: Unix, nicht WASI.

os.EX_NOPERM

Exit-Code, der bedeutet, dass nicht genügend Berechtigungen vorhanden waren, um die Operation auszuführen (jedoch nicht für Dateisystemprobleme gedacht).

Verfügbarkeit: Unix, nicht WASI.

os.EX_CONFIG

Exit-Code, der bedeutet, dass eine Art Konfigurationsfehler aufgetreten ist.

Verfügbarkeit: Unix, nicht WASI.

os.EX_NOTFOUND

Exit-Code, der bedeutet, dass etwas wie "ein Eintrag wurde nicht gefunden".

Verfügbarkeit: Unix, nicht WASI.

os.fork()

Forkt einen Kindprozess. Gibt 0 im Kind und die Prozess-ID des Kindes im Elternprozess zurück. Wenn ein Fehler auftritt, wird eine OSError ausgelöst.

Beachten Sie, dass einige Plattformen, einschließlich FreeBSD <= 6.3 und Cygwin, bekannte Probleme beim Aufrufen von fork() aus einem Thread haben.

Löst ein Audit-Ereignis os.fork ohne Argumente aus.

Warnung

Wenn Sie TLS-Sockets in einer Anwendung verwenden, die fork() aufruft, beachten Sie die Warnung in der Dokumentation von ssl.

Warnung

Unter macOS ist die Verwendung dieser Funktion unsicher, wenn sie mit höherrangigen System-APIs vermischt wird, und dazu gehört auch die Verwendung von urllib.request.

Geändert in Version 3.8: Der Aufruf von fork() in einem Subinterpreter wird nicht mehr unterstützt (es wird eine RuntimeError ausgelöst).

Geändert in Version 3.12: Wenn Python feststellen kann, dass Ihr Prozess mehrere Threads hat, löst os.fork() nun eine DeprecationWarning aus.

Wir haben uns entschieden, dies als Warnung auszugeben, wenn erkennbar, um Entwickler besser über ein Designproblem zu informieren, das die POSIX-Plattform speziell als nicht unterstützt bezeichnet. Selbst in Code, der *scheinbar* funktioniert, war es auf POSIX-Plattformen noch nie sicher, Threading mit os.fork() zu mischen. Die CPython-Laufzeitumgebung selbst hat immer API-Aufrufe getätigt, die bei mehreren Threads im Elternprozess nicht sicher für die Verwendung im Kindprozess sind (wie malloc und free).

Benutzer von macOS oder Benutzer von libc- oder malloc-Implementierungen, die über die üblicherweise in glibc gefundenen hinausgehen, gehören zu denen, die eher Deadlocks beim Ausführen solchen Codes erleben.

Siehe diese Diskussion über die Inkompatibilität von fork mit Threads für technische Details, warum wir dieses langjährige Plattformkompatibilitätsproblem für Entwickler hervorheben.

Verfügbarkeit: POSIX, nicht WASI, nicht Android, nicht iOS.

os.forkpty()

Forkt einen Kindprozess, wobei ein neues Pseudo-Terminal als steuerndes Terminal des Kindes verwendet wird. Gibt ein Paar von (pid, fd) zurück, wobei pid im Kind 0 ist, die Prozess-ID des neuen Kindes im Elternprozess und fd der Dateideskriptor des Master-Endes des Pseudo-Terminals ist. Für einen portableren Ansatz verwenden Sie das Modul pty. Wenn ein Fehler auftritt, wird eine OSError ausgelöst.

Löst ein Audit-Ereignis os.forkpty ohne Argumente aus.

Warnung

Unter macOS ist die Verwendung dieser Funktion unsicher, wenn sie mit höherrangigen System-APIs vermischt wird, und dazu gehört auch die Verwendung von urllib.request.

Geändert in Version 3.8: Der Aufruf von forkpty() in einem Subinterpreter wird nicht mehr unterstützt (es wird eine RuntimeError ausgelöst).

Geändert in Version 3.12: Wenn Python feststellen kann, dass Ihr Prozess mehrere Threads hat, löst dies nun eine DeprecationWarning aus. Siehe die längere Erklärung zu os.fork().

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.kill(pid, sig, /)

Sendet das Signal sig an den Prozess pid. Konstanten für die spezifischen Signale, die auf der Host-Plattform verfügbar sind, sind im Modul signal definiert.

Windows: Die Signale signal.CTRL_C_EVENT und signal.CTRL_BREAK_EVENT sind spezielle Signale, die nur an Konsolenprozesse gesendet werden können, die ein gemeinsames Konsolenfenster teilen, z. B. einige Unterprozesse. Jeder andere Wert für sig führt dazu, dass der Prozess bedingungslos durch die TerminateProcess-API beendet wird, und der Exit-Code wird auf sig gesetzt.

Siehe auch signal.pthread_kill().

Löst ein Audit-Ereignis os.kill mit den Argumenten pid, sig aus.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht iOS.

Geändert in Version 3.2: Unterstützung für Windows hinzugefügt.

os.killpg(pgid, sig, /)

Sendet das Signal sig an die Prozessgruppe pgid.

Löst ein Audit-Ereignis os.killpg mit den Argumenten pgid, sig aus.

Verfügbarkeit: Unix, nicht WASI, nicht iOS.

os.nice(increment, /)

Erhöhen Sie die „Nettigkeit“ des Prozesses um increment. Geben Sie die neue Nettigkeit zurück.

Verfügbarkeit: Unix, nicht WASI.

os.pidfd_open(pid, flags=0)

Gibt einen Dateideskriptor zurück, der sich auf den Prozess pid bezieht, wobei flags gesetzt sind. Dieser Deskriptor kann verwendet werden, um die Prozessverwaltung ohne Wettläufe und Signale durchzuführen.

Weitere Einzelheiten finden Sie auf der Handbuchseite pidfd_open(2).

Verfügbarkeit: Linux >= 5.3, Android >= build-time API Level 31

Hinzugefügt in Version 3.9.

os.PIDFD_NONBLOCK

Dieses Flag zeigt an, dass der Dateideskriptor nicht blockierend ist. Wenn der durch den Dateideskriptor referenzierte Prozess noch nicht beendet wurde, gibt ein Versuch, auf den Dateideskriptor mit waitid(2) zu warten, sofort den Fehler EAGAIN zurück, anstatt zu blockieren.

Verfügbarkeit: Linux >= 5.10

Hinzugefügt in Version 3.12.

os.plock(op, /)

Sperrt Programmsegmente im Speicher. Der Wert von op (definiert in <sys/lock.h>) bestimmt, welche Segmente gesperrt werden.

Verfügbarkeit: Unix, nicht WASI, nicht iOS.

os.popen(cmd, mode='r', buffering=-1)

Öffnet eine Pipe zu oder von dem Befehl cmd. Der Rückgabewert ist ein geöffnetes Dateiobjekt, das mit der Pipe verbunden ist, das gelesen oder geschrieben werden kann, abhängig davon, ob mode 'r' (Standard) oder 'w' ist. Das buffering Argument hat die gleiche Bedeutung wie das entsprechende Argument der integrierten Funktion open(). Das zurückgegebene Dateiobjekt liest oder schreibt Textzeichenketten anstelle von Bytes.

Die Methode close gibt None zurück, wenn der Unterprozess erfolgreich beendet wurde, oder den Rückgabecode des Unterprozesses, wenn ein Fehler aufgetreten ist. Auf POSIX-Systemen stellt ein positiver Rückgabecode den um ein Byte nach links verschobenen Rückgabewert des Prozesses dar. Wenn der Rückgabecode negativ ist, wurde der Prozess durch das durch den negierten Wert des Rückgabecodes angegebene Signal beendet. (Zum Beispiel könnte der Rückgabewert - signal.SIGKILL sein, wenn der Unterprozess getötet wurde.) Auf Windows-Systemen enthält der Rückgabewert den vorzeichenbehafteten ganzzahligen Rückgabecode des Kindprozesses.

Unter Unix kann waitstatus_to_exitcode() verwendet werden, um das Ergebnis der Methode close (Exit-Status) in einen Exit-Code umzuwandeln, wenn es nicht None ist. Unter Windows ist das Ergebnis der Methode close direkt der Exit-Code (oder None).

Dies wird mit subprocess.Popen implementiert; siehe die Dokumentation dieser Klasse für leistungsfähigere Möglichkeiten zur Verwaltung und Kommunikation mit Unterprozessen.

Verfügbarkeit: nicht WASI, nicht Android, nicht iOS.

Hinweis

Der Python UTF-8-Modus beeinflusst die für cmd und Pipe-Inhalte verwendeten Kodierungen.

popen() ist ein einfacher Wrapper um subprocess.Popen. Verwenden Sie subprocess.Popen oder subprocess.run(), um Optionen wie Kodierungen zu steuern.

Veraltet seit Version 3.14: Die Funktion ist soft deprecated und sollte nicht mehr zum Schreiben neuen Codes verwendet werden. Das Modul subprocess wird stattdessen empfohlen.

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Umschließt die C-Bibliotheks-API posix_spawn() für die Verwendung aus Python.

Die meisten Benutzer sollten subprocess.run() anstelle von posix_spawn() verwenden.

Die positionsbezogenen Argumente path, args und env sind ähnlich wie bei execve(). env darf None sein, in diesem Fall wird die Umgebung des aktuellen Prozesses verwendet.

Der Parameter path ist der Pfad zur ausführbaren Datei. Der path sollte ein Verzeichnis enthalten. Verwenden Sie posix_spawnp(), um eine ausführbare Datei ohne Verzeichnis zu übergeben.

Das Argument file_actions kann eine Sequenz von Tupeln sein, die Aktionen beschreiben, die auf bestimmte Dateideskriptoren im Kindprozess zwischen den fork() und exec() Schritten der C-Bibliotheksimplementierung angewendet werden. Das erste Element jedes Tupels muss einer der drei unten aufgeführten Typindikatoren sein, die die verbleibenden Tupel-Elemente beschreiben.

os.POSIX_SPAWN_OPEN

(os.POSIX_SPAWN_OPEN, fd, path, flags, mode)

Führt os.dup2(os.open(path, flags, mode), fd) aus.

os.POSIX_SPAWN_CLOSE

(os.POSIX_SPAWN_CLOSE, fd)

Führt os.close(fd) aus.

os.POSIX_SPAWN_DUP2

(os.POSIX_SPAWN_DUP2, fd, new_fd)

Führt os.dup2(fd, new_fd) aus.

os.POSIX_SPAWN_CLOSEFROM

(os.POSIX_SPAWN_CLOSEFROM, fd)

Führt os.closerange(fd, INF) aus.

Diese Tupel entsprechen den C-Bibliotheks-API-Aufrufen posix_spawn_file_actions_addopen(), posix_spawn_file_actions_addclose(), posix_spawn_file_actions_adddup2() und posix_spawn_file_actions_addclosefrom_np(), die zur Vorbereitung des posix_spawn()-Aufrufs selbst verwendet werden.

Das Argument setpgroup setzt die Prozessgruppe des Kindes auf den angegebenen Wert. Wenn der angegebene Wert 0 ist, wird die Prozessgruppen-ID des Kindes mit seiner Prozess-ID identisch gemacht. Wenn der Wert von setpgroup nicht gesetzt ist, erbt das Kind die Prozessgruppen-ID des Elternprozesses. Dieses Argument entspricht dem C-Bibliotheks-Flag POSIX_SPAWN_SETPGROUP.

Wenn das Argument resetids True ist, werden die effektive UID und GID des Kindes auf die reale UID und GID des Elternprozesses zurückgesetzt. Wenn das Argument False ist, behält das Kind die effektive UID und GID des Elternprozesses bei. In beiden Fällen, wenn die Set-User-ID und Set-Group-ID Berechtigungsbits auf der ausführbaren Datei aktiviert sind, überschreiben ihre Auswirkungen die Einstellung der effektiven UID und GID. Dieses Argument entspricht dem C-Bibliotheks-Flag POSIX_SPAWN_RESETIDS.

Wenn das Argument setsid True ist, wird für posix_spawn eine neue Sitzungs-ID erstellt. setsid erfordert das Flag POSIX_SPAWN_SETSID oder POSIX_SPAWN_SETSID_NP. Andernfalls wird NotImplementedError ausgelöst.

Das Argument setsigmask setzt die Signalmaske auf das angegebene Signalset. Wenn der Parameter nicht verwendet wird, erbt das Kind die Signalmaske des Elternprozesses. Dieses Argument entspricht dem C-Bibliotheks-Flag POSIX_SPAWN_SETSIGMASK.

Das Argument sigdef setzt die Disposition aller Signale im angegebenen Set zurück. Dieses Argument entspricht dem C-Bibliotheks-Flag POSIX_SPAWN_SETSIGDEF.

Das Argument scheduler muss ein Tupel sein, das die (optionale) Scheduler-Richtlinie und eine Instanz von sched_param mit den Scheduler-Parametern enthält. Ein Wert von None anstelle der Scheduler-Richtlinie zeigt an, dass diese nicht bereitgestellt wird. Dieses Argument ist eine Kombination aus den C-Bibliotheks-Flags POSIX_SPAWN_SETSCHEDPARAM und POSIX_SPAWN_SETSCHEDULER.

Löst ein Audit-Ereignis os.posix_spawn mit den Argumenten path, argv, env aus.

Hinzugefügt in Version 3.8.

Geändert in Version 3.13: Der Parameter env akzeptiert None. os.POSIX_SPAWN_CLOSEFROM ist auf Plattformen verfügbar, auf denen posix_spawn_file_actions_addclosefrom_np() existiert.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Umschließt die C-Bibliotheks-API posix_spawnp() für die Verwendung aus Python.

Ähnlich wie posix_spawn(), außer dass das System die ausführbare Datei in der Liste der Verzeichnisse sucht, die durch die Umgebungsvariable PATH angegeben sind (auf die gleiche Weise wie bei execvp(3)).

Löst ein Audit-Ereignis os.posix_spawn mit den Argumenten path, argv, env aus.

Hinzugefügt in Version 3.8.

Verfügbarkeit: POSIX, nicht WASI, nicht Android, nicht iOS.

Siehe die Dokumentation zu posix_spawn().

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

Registriert aufrufbare Objekte, die ausgeführt werden sollen, wenn ein neuer Kindprozess über os.fork() oder ähnliche Prozessklonierungs-APIs erzeugt wird. Die Parameter sind optional und nur als Schlüsselwortargumente zulässig. Jeder gibt einen anderen Aufrufpunkt an.

  • before ist eine Funktion, die vor der Erzeugung eines Kindprozesses aufgerufen wird.

  • after_in_parent ist eine Funktion, die im Elternprozess nach der Erzeugung eines Kindprozesses aufgerufen wird.

  • after_in_child ist eine Funktion, die im Kindprozess aufgerufen wird.

Diese Aufrufe werden nur dann gemacht, wenn erwartet wird, dass die Kontrolle an den Python-Interpreter zurückkehrt. Ein typischer Start mit subprocess löst diese nicht aus, da der Kindprozess den Interpreter nicht erneut aufruft.

Funktionen, die für die Ausführung vor dem Forking registriert sind, werden in umgekehrter Registrierungsreihenfolge aufgerufen. Funktionen, die für die Ausführung nach dem Forking (entweder im Eltern- oder im Kindprozess) registriert sind, werden in Registrierungsreihenfolge aufgerufen.

Beachten Sie, dass fork()-Aufrufe von Drittanbieter-C-Code diese Funktionen möglicherweise nicht aufruft, es sei denn, es ruft explizit PyOS_BeforeFork(), PyOS_AfterFork_Parent() und PyOS_AfterFork_Child() auf.

Es gibt keine Möglichkeit, eine Funktion zu deregistrieren.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.7.

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

Führt das Programm path in einem neuen Prozess aus.

(Beachten Sie, dass das Modul subprocess leistungsfähigere Einrichtungen zum Erzeugen neuer Prozesse und zum Abrufen ihrer Ergebnisse bereitstellt; die Verwendung dieses Moduls ist diesen Funktionen vorzuziehen. Beachten Sie insbesondere den Abschnitt Ersetzen älterer Funktionen durch das subprocess-Modul.)

Wenn mode P_NOWAIT ist, gibt diese Funktion die Prozess-ID des neuen Prozesses zurück; wenn mode P_WAIT ist, gibt sie den Exit-Code des Prozesses zurück, wenn er normal beendet wird, oder -signal, wobei signal das Signal ist, das den Prozess getötet hat. Unter Windows ist die Prozess-ID tatsächlich das Prozess-Handle, so dass sie mit der Funktion waitpid() verwendet werden kann.

Hinweis zu VxWorks: Diese Funktion gibt -signal nicht zurück, wenn der neue Prozess getötet wird. Stattdessen wird eine OSError-Ausnahme ausgelöst.

Die Varianten "l" und "v" der Funktionen spawn* unterscheiden sich in der Art und Weise, wie Befehlszeilenargumente übergeben werden. Die "l"-Varianten sind vielleicht am einfachsten zu handhaben, wenn die Anzahl der Parameter bei der Code-Schreibung feststeht; die einzelnen Parameter werden einfach zu zusätzlichen Parametern der spawnl*()-Funktionen. Die "v"-Varianten sind gut, wenn die Anzahl der Parameter variabel ist, wobei die Argumente in einer Liste oder einem Tupel als Parameter args übergeben werden. In beiden Fällen müssen die Argumente an den Kindprozess mit dem Namen des auszuführenden Befehls beginnen.

Die Varianten, die ein zweites "p" am Ende enthalten (spawnlp(), spawnlpe(), spawnvp() und spawnvpe()) verwenden die Umgebungsvariable PATH, um die Programmdatei file zu finden. Wenn die Umgebung ersetzt wird (unter Verwendung einer der spawn*e-Varianten, siehe nächster Absatz), wird die neue Umgebung als Quelle für die Variable PATH verwendet. Die anderen Varianten, spawnl(), spawnle(), spawnv() und spawnve(), verwenden die Variable PATH nicht, um die ausführbare Datei zu finden; path muss einen geeigneten absoluten oder relativen Pfad enthalten.

Für spawnle(), spawnlpe(), spawnve() und spawnvpe() (beachten Sie, dass diese alle auf „e“ enden) muss der Parameter env eine Abbildung sein, die zur Definition der Umgebungsvariablen für den neuen Prozess verwendet wird (sie werden anstelle der Umgebung des aktuellen Prozesses verwendet); die Funktionen spawnl(), spawnlp(), spawnv() und spawnvp() veranlassen alle, dass der neue Prozess die Umgebung des aktuellen Prozesses erbt. Beachten Sie, dass Schlüssel und Werte im env-Dictionary Zeichenketten sein müssen; ungültige Schlüssel oder Werte führen dazu, dass die Funktion fehlschlägt, mit dem Rückgabewert 127.

Als Beispiel sind die folgenden Aufrufe von spawnlp() und spawnvpe() äquivalent

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

Löst ein Auditing-Ereignis os.spawn mit den Argumenten mode, path, args, env aus.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.

spawnlp(), spawnlpe(), spawnvp() und spawnvpe() sind unter Windows nicht verfügbar. spawnle() und spawnve() sind unter Windows nicht Thread-sicher; wir empfehlen stattdessen die Verwendung des subprocess-Moduls.

Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.

Veraltet seit Version 3.14: Diese Funktionen sind soft deprecated und sollten nicht mehr zum Schreiben von neuem Code verwendet werden. Das Modul subprocess wird stattdessen empfohlen.

os.P_NOWAIT
os.P_NOWAITO

Mögliche Werte für den Parameter mode für die Funktionenfamilie spawn*. Wenn einer dieser Werte angegeben wird, kehren die Funktionen spawn* zurück, sobald der neue Prozess erstellt wurde, und geben die Prozess-ID als Rückgabewert zurück.

Verfügbarkeit: Unix, Windows.

os.P_WAIT

Möglicher Wert für den Parameter mode für die Funktionenfamilie spawn*. Wenn dieser als mode angegeben wird, geben die Funktionen spawn* nicht zurück, bis der neue Prozess vollständig ausgeführt wurde, und geben den Exit-Status des Prozesses zurück, wenn die Ausführung erfolgreich war, oder -signal, wenn ein Signal den Prozess beendet hat.

Verfügbarkeit: Unix, Windows.

os.P_DETACH
os.P_OVERLAY

Mögliche Werte für den Parameter mode für die Funktionenfamilie spawn*. Diese sind weniger portabel als die oben genannten. P_DETACH ist ähnlich wie P_NOWAIT, aber der neue Prozess ist von der Konsole des aufrufenden Prozesses getrennt. Wenn P_OVERLAY verwendet wird, wird der aktuelle Prozess ersetzt; die Funktion spawn* kehrt nicht zurück.

Verfügbarkeit: Windows.

os.startfile(path[, operation][, arguments][, cwd][, show_cmd])

Startet eine Datei mit der zugehörigen Anwendung.

Wenn operation nicht angegeben ist, verhält sich dies wie ein Doppelklick auf die Datei im Windows Explorer oder wie die Angabe des Dateinamens als Argument für den Befehl start in der interaktiven Eingabeaufforderung: Die Datei wird mit der Anwendung (falls vorhanden) geöffnet, mit der ihre Erweiterung verknüpft ist.

Wenn eine andere operation angegeben wird, muss es sich um ein „Befehlsverb“ handeln, das angibt, was mit der Datei geschehen soll. Häufige Verben, die von Microsoft dokumentiert werden, sind 'open', 'print' und 'edit' (für Dateien) sowie 'explore' und 'find' (für Verzeichnisse).

Beim Starten einer Anwendung geben Sie arguments an, die als einzelne Zeichenkette übergeben werden. Dieses Argument hat möglicherweise keine Auswirkung, wenn diese Funktion zum Starten eines Dokuments verwendet wird.

Das Standardarbeitsverzeichnis wird geerbt, kann aber durch das Argument cwd überschrieben werden. Dies sollte ein absoluter Pfad sein. Ein relativer path wird relativ zu diesem Argument aufgelöst.

Verwenden Sie show_cmd, um den Standard-Fensterstil zu überschreiben. Ob dies eine Auswirkung hat, hängt von der gestarteten Anwendung ab. Die Werte sind Ganzzahlen, wie sie von der Win32-Funktion ShellExecute() unterstützt werden.

startfile() kehrt zurück, sobald die zugehörige Anwendung gestartet wurde. Es gibt keine Option, auf das Schließen der Anwendung zu warten, und keine Möglichkeit, den Exit-Status der Anwendung abzurufen. Der Parameter path bezieht sich auf das aktuelle Verzeichnis oder cwd. Wenn Sie einen absoluten Pfad verwenden möchten, stellen Sie sicher, dass das erste Zeichen kein Schrägstrich ('/') ist. Verwenden Sie pathlib oder die Funktion os.path.normpath(), um sicherzustellen, dass Pfade für Win32 korrekt kodiert sind.

Um den Overhead beim Interpreterstart zu reduzieren, wird die Win32-Funktion ShellExecute() erst aufgelöst, wenn diese Funktion zum ersten Mal aufgerufen wird. Wenn die Funktion nicht aufgelöst werden kann, wird NotImplementedError ausgelöst.

Löst ein Auditing-Ereignis os.startfile mit den Argumenten path, operation aus.

Löst ein Auditing-Ereignis os.startfile/2 mit den Argumenten path, operation, arguments, cwd, show_cmd aus.

Verfügbarkeit: Windows.

Geändert in Version 3.10: Die Argumente arguments, cwd und show_cmd sowie das Audit-Ereignis os.startfile/2 wurden hinzugefügt.

os.system(command)

Führt den Befehl (eine Zeichenkette) in einer Subshell aus. Dies wird durch Aufruf der Standard-C-Funktion system() implementiert und hat dieselben Einschränkungen. Änderungen an sys.stdin usw. spiegeln sich nicht in der Umgebung des ausgeführten Befehls wider. Wenn command eine Ausgabe erzeugt, wird diese an den Standard-Ausgabestrom des Interpreters gesendet. Der C-Standard gibt die Bedeutung des Rückgabewerts der C-Funktion nicht an, daher ist der Rückgabewert der Python-Funktion systemabhängig.

Unter Unix ist der Rückgabewert der Exit-Status des Prozesses, kodiert im Format, das für wait() angegeben ist.

Unter Windows ist der Rückgabewert der, den die System-Shell nach Ausführung von command zurückgibt. Die Shell wird durch die Windows-Umgebungsvariable COMSPEC angegeben: sie ist normalerweise cmd.exe, die den Exit-Status des ausgeführten Befehls zurückgibt; auf Systemen, die eine nicht-native Shell verwenden, konsultieren Sie die Dokumentation Ihrer Shell.

Das Modul subprocess bietet leistungsfähigere Einrichtungen zum Starten neuer Prozesse und zum Abrufen ihrer Ergebnisse; die Verwendung dieses Moduls wird anstelle dieser Funktion empfohlen. Siehe den Abschnitt Ersetzen älterer Funktionen durch das Modul subprocess in der Dokumentation von subprocess für einige nützliche Rezepte.

Unter Unix kann waitstatus_to_exitcode() verwendet werden, um das Ergebnis (Exit-Status) in einen Exit-Code umzuwandeln. Unter Windows ist das Ergebnis direkt der Exit-Code.

Löst ein Auditing-Ereignis os.system mit dem Argument command aus.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.

os.times()

Gibt die aktuellen globalen Prozesszeiten zurück. Der Rückgabewert ist ein Objekt mit fünf Attributen

  • user - Benutzerzeit

  • system - Systemzeit

  • children_user - Benutzerzeit aller Kindprozesse

  • children_system - Systemzeit aller Kindprozesse

  • elapsed - tatsächlich verstrichene Zeit seit einem festen Zeitpunkt in der Vergangenheit

Aus Gründen der Abwärtskompatibilität verhält sich dieses Objekt auch wie ein Fünf-Tupel, das user, system, children_user, children_system und elapsed in dieser Reihenfolge enthält.

Siehe die Unix-Manpage times(2) und die Manpage times(3) unter Unix oder die MSDN-Dokumentation zu GetProcessTimes unter Windows. Unter Windows sind nur user und system bekannt; die anderen Attribute sind null.

Verfügbarkeit: Unix, Windows.

Geändert in Version 3.3: Der Rückgabetyp wurde von einem Tupel in ein tupelähnliches Objekt mit benannten Attributen geändert.

os.wait()

Wartet auf die Beendigung eines Kindprozesses und gibt ein Tupel zurück, das seine PID und seine Exit-Statusanzeige enthält: eine 16-Bit-Zahl, deren niederwertiges Byte die Signalnummer ist, die den Prozess beendet hat, und deren höherwertiges Byte der Exit-Status ist (wenn die Signalnummer null ist); das höchstwertige Bit des niederwertigen Bytes ist gesetzt, wenn eine Core-Datei erstellt wurde.

Wenn keine Kinder zum Warten zur Verfügung stehen, wird ChildProcessError ausgelöst.

waitstatus_to_exitcode() kann verwendet werden, um den Exit-Status in einen Exit-Code umzuwandeln.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Siehe auch

Die anderen unten dokumentierten wait*()-Funktionen können verwendet werden, um auf die Beendigung eines bestimmten Kindprozesses zu warten und bieten mehr Optionen. waitpid() ist die einzige, die auch unter Windows verfügbar ist.

os.waitid(idtype, id, options, /)

Wartet auf die Beendigung eines Kindprozesses.

idtype kann P_PID, P_PGID, P_ALL oder (unter Linux) P_PIDFD sein. Die Interpretation von id hängt davon ab; siehe deren individuelle Beschreibungen.

options ist eine OR-Kombination von Flags. Mindestens eines von WEXITED, WSTOPPED oder WCONTINUED ist erforderlich; WNOHANG und WNOWAIT sind zusätzliche optionale Flags.

Der Rückgabewert ist ein Objekt, das die Daten in der Struktur siginfo_t mit den folgenden Attributen darstellt

  • si_pid (Prozess-ID)

  • si_uid (reale Benutzer-ID des Kindes)

  • si_signo (immer SIGCHLD)

  • si_status (der Exit-Status oder die Signalnummer, abhängig von si_code)

  • si_code (siehe CLD_EXITED für mögliche Werte)

Wenn WNOHANG angegeben ist und keine passenden Kinder im angeforderten Zustand vorhanden sind, wird None zurückgegeben. Andernfalls, wenn keine passenden Kinder zum Warten zur Verfügung stehen, wird ChildProcessError ausgelöst.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.3.

Geändert in Version 3.13: Diese Funktion ist jetzt auch unter macOS verfügbar.

os.waitpid(pid, options, /)

Die Details dieser Funktion unterscheiden sich unter Unix und Windows.

Unter Unix: Wartet auf die Beendigung eines Kindprozesses mit der Prozess-ID pid und gibt ein Tupel zurück, das seine Prozess-ID und seine Exit-Statusanzeige enthält (kodiert wie für wait()). Die Semantik des Aufrufs wird durch den Wert der Ganzzahl options beeinflusst, der für den normalen Betrieb 0 sein sollte.

Wenn pid größer als 0 ist, fordert waitpid() Statusinformationen für diesen spezifischen Prozess an. Wenn pid 0 ist, bezieht sich die Anfrage auf den Status eines beliebigen Kindes in der Prozessgruppe des aktuellen Prozesses. Wenn pid -1 ist, bezieht sich die Anfrage auf ein beliebiges Kind des aktuellen Prozesses. Wenn pid kleiner als -1 ist, wird der Status für einen beliebigen Prozess in der Prozessgruppe -pid (dem Absolutwert von pid) angefordert.

options ist eine OR-Kombination von Flags. Wenn es WNOHANG enthält und keine passenden Kinder im angeforderten Zustand vorhanden sind, wird (0, 0) zurückgegeben. Andernfalls, wenn keine passenden Kinder zum Warten zur Verfügung stehen, wird ChildProcessError ausgelöst. Andere Optionen, die verwendet werden können, sind WUNTRACED und WCONTINUED.

Unter Windows: Wartet auf die Beendigung eines Prozesses mit dem Prozesshandle pid und gibt ein Tupel zurück, das pid und seinen Exit-Status (um 8 Bits nach links verschoben, was die plattformübergreifende Nutzung der Funktion erleichtert) enthält. Ein pid kleiner oder gleich 0 hat unter Windows keine besondere Bedeutung und löst eine Ausnahme aus. Der Wert der Ganzzahl options hat keine Auswirkung. pid kann sich auf jeden Prozess beziehen, dessen ID bekannt ist, nicht notwendigerweise ein Kindprozess. Die mit P_NOWAIT aufgerufenen Funktionen spawn* geben geeignete Prozesshandles zurück.

waitstatus_to_exitcode() kann verwendet werden, um den Exit-Status in einen Exit-Code umzuwandeln.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.

Geändert in Version 3.5: Wenn der Systemaufruf unterbrochen wird und der Signal-Handler keine Ausnahme auslöst, versucht die Funktion nun erneut, den Systemaufruf auszuführen, anstatt eine InterruptedError-Ausnahme auszulösen (siehe PEP 475 für die Begründung).

os.wait3(options)

Ähnlich wie waitpid(), mit dem Unterschied, dass kein Prozess-ID-Argument übergeben wird und ein 3-Elemente-Tupel zurückgegeben wird, das die Prozess-ID des Kindes, die Exit-Statusanzeige und Informationen zur Ressourcennutzung enthält. Einzelheiten zu den Informationen zur Ressourcennutzung finden Sie unter resource.getrusage(). Das Argument options ist dasselbe wie bei waitpid() und wait4().

waitstatus_to_exitcode() kann verwendet werden, um den Exit-Status in einen Exit-Code umzuwandeln.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.wait4(pid, options)

Ähnlich wie waitpid(), mit dem Unterschied, dass ein 3-Elemente-Tupel zurückgegeben wird, das die Prozess-ID des Kindes, die Exit-Statusanzeige und Informationen zur Ressourcennutzung enthält. Einzelheiten zu den Informationen zur Ressourcennutzung finden Sie unter resource.getrusage(). Die Argumente für wait4() sind dieselben wie bei waitpid().

waitstatus_to_exitcode() kann verwendet werden, um den Exit-Status in einen Exit-Code umzuwandeln.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.P_PID
os.P_PGID
os.P_ALL
os.P_PIDFD

Dies sind die möglichen Werte für idtype in waitid(). Sie beeinflussen die Interpretation von id

  • P_PID - warten Sie auf das Kind mit der PID id.

  • P_PGID - warten Sie auf ein beliebiges Kind mit der Prozessgruppen-ID id.

  • P_ALL - wartet auf jedes Kind; id wird ignoriert.

  • P_PIDFD - wartet auf das Kind, das durch den Dateideskriptor id identifiziert wird (ein Prozess-Dateideskriptor, der mit pidfd_open() erstellt wurde).

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinweis

P_PIDFD ist nur unter Linux >= 5.4 verfügbar.

Hinzugefügt in Version 3.3.

Neu in Version 3.9: Die Konstante P_PIDFD.

os.WCONTINUED

Dieses options Flag für waitpid(), wait3(), wait4() und waitid() bewirkt, dass Kindprozesse gemeldet werden, wenn sie seit ihrer letzten Meldung aus einem Job-Control-Stopp fortgesetzt wurden.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WEXITED

Dieses options Flag für waitid() bewirkt, dass beendete Kindprozesse gemeldet werden.

Die anderen wait* Funktionen melden immer beendete Kinder, daher ist diese Option für sie nicht verfügbar.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.3.

os.WSTOPPED

Dieses options Flag für waitid() bewirkt, dass durch die Zustellung eines Signals gestoppte Kindprozesse gemeldet werden.

Diese Option ist für die anderen wait* Funktionen nicht verfügbar.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.3.

os.WUNTRACED

Dieses options Flag für waitpid(), wait3() und wait4() bewirkt, dass Kindprozesse auch dann gemeldet werden, wenn sie gestoppt wurden, aber ihr aktueller Zustand seit dem Stopp nicht gemeldet wurde.

Diese Option ist für waitid() nicht verfügbar.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WNOHANG

Dieses options Flag bewirkt, dass waitpid(), wait3(), wait4() und waitid() sofort zurückkehren, wenn kein Kindprozessstatus sofort verfügbar ist.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WNOWAIT

Dieses options Flag bewirkt, dass waitid() das Kind in einem wartbaren Zustand belässt, sodass ein späterer wait*() Aufruf verwendet werden kann, um die Statusinformationen des Kindes erneut abzurufen.

Diese Option ist für die anderen wait* Funktionen nicht verfügbar.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

Dies sind die möglichen Werte für si_code im Ergebnis, das von waitid() zurückgegeben wird.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.3.

Geändert in Version 3.9: Hinzugefügt wurden die Werte CLD_KILLED und CLD_STOPPED.

os.waitstatus_to_exitcode(status)

Konvertiert einen Warte-Status in einen Exit-Code.

Unter Unix

  • Wenn der Prozess normal beendet wurde (wenn WIFEXITED(status) wahr ist), gib den Exit-Status des Prozesses zurück (gib WEXITSTATUS(status) zurück): Ergebnis größer oder gleich 0.

  • Wenn der Prozess durch ein Signal beendet wurde (wenn WIFSIGNALED(status) wahr ist), gib -signum zurück, wobei signum die Nummer des Signals ist, das zum Beenden des Prozesses geführt hat (gib -WTERMSIG(status) zurück): Ergebnis kleiner als 0.

  • Andernfalls löse eine ValueError aus.

Unter Windows gib status um 8 Bits nach rechts verschoben zurück.

Unter Unix, wenn der Prozess verfolgt wird oder wenn waitpid() mit der Option WUNTRACED aufgerufen wurde, muss der Aufrufer zuerst prüfen, ob WIFSTOPPED(status) wahr ist. Diese Funktion darf nicht aufgerufen werden, wenn WIFSTOPPED(status) wahr ist.

Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.

Hinzugefügt in Version 3.9.

Die folgenden Funktionen nehmen einen Prozess-Statuscode entgegen, wie er von system(), wait() oder waitpid() zurückgegeben wird. Sie können verwendet werden, um die Disposition eines Prozesses zu ermitteln.

os.WCOREDUMP(status, /)

Gibt True zurück, wenn ein Core-Dump für den Prozess generiert wurde, andernfalls False.

Diese Funktion sollte nur verwendet werden, wenn WIFSIGNALED() wahr ist.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WIFCONTINUED(status)

Gibt True zurück, wenn ein gestopptes Kind durch die Zustellung von SIGCONT wieder aufgenommen wurde (wenn der Prozess aus einem Job-Control-Stopp fortgesetzt wurde), andernfalls False.

Siehe die Option WCONTINUED.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WIFSTOPPED(status)

Gibt True zurück, wenn der Prozess durch die Zustellung eines Signals gestoppt wurde, andernfalls False.

WIFSTOPPED() gibt nur dann True zurück, wenn der Aufruf von waitpid() mit der Option WUNTRACED erfolgte oder wenn der Prozess verfolgt wird (siehe ptrace(2)).

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WIFSIGNALED(status)

Gibt True zurück, wenn der Prozess durch ein Signal beendet wurde, andernfalls False.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WIFEXITED(status)

Gibt True zurück, wenn der Prozess normal beendet wurde, d. h. durch Aufruf von exit() oder _exit(), oder durch Rückkehr aus main(); andernfalls False.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WEXITSTATUS(status)

Gibt den Exit-Status des Prozesses zurück.

Diese Funktion sollte nur verwendet werden, wenn WIFEXITED() wahr ist.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WSTOPSIG(status)

Gibt das Signal zurück, das den Prozess zum Anhalten veranlasste.

Diese Funktion sollte nur verwendet werden, wenn WIFSTOPPED() wahr ist.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

os.WTERMSIG(status)

Gibt die Nummer des Signals zurück, das den Prozess zum Beenden veranlasste.

Diese Funktion sollte nur verwendet werden, wenn WIFSIGNALED() wahr ist.

Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.

Schnittstelle zum Scheduler

Diese Funktionen steuern, wie ein Prozess CPU-Zeit vom Betriebssystem zugewiesen bekommt. Sie sind nur auf einigen Unix-Plattformen verfügbar. Für detailliertere Informationen konsultieren Sie Ihre Unix-Manpages.

Hinzugefügt in Version 3.3.

Die folgenden Scheduling-Politiken werden exponiert, falls sie vom Betriebssystem unterstützt werden.

os.SCHED_OTHER

Die Standard-Scheduling-Politik.

os.SCHED_BATCH

Scheduling-Politik für CPU-intensive Prozesse, die versucht, die Interaktivität auf dem Rest des Computers zu erhalten.

os.SCHED_DEADLINE

Scheduling-Politik für Aufgaben mit Deadline-Beschränkungen.

Hinzugefügt in Version 3.14.

os.SCHED_IDLE

Scheduling-Politik für extrem niedrig priorisierte Hintergrundaufgaben.

os.SCHED_NORMAL

Alias für SCHED_OTHER.

Hinzugefügt in Version 3.14.

os.SCHED_SPORADIC

Scheduling-Politik für sporadische Serverprogramme.

os.SCHED_FIFO

Eine First-In, First-Out (FIFO) Scheduling-Politik.

os.SCHED_RR

Eine Round-Robin Scheduling-Politik.

os.SCHED_RESET_ON_FORK

Dieses Flag kann mit jeder anderen Scheduling-Politik mit OR verknüpft werden. Wenn ein Prozess mit diesem gesetzten Flag eine Fork durchführt, werden die Scheduling-Politik und Priorität des Kindes auf den Standardwert zurückgesetzt.

class os.sched_param(sched_priority)

Diese Klasse repräsentiert abstimmbare Scheduling-Parameter, die in sched_setparam(), sched_setscheduler() und sched_getparam() verwendet werden. Sie ist unveränderlich.

Derzeit gibt es nur einen möglichen Parameter

sched_priority

Die Scheduling-Priorität für eine Scheduling-Politik.

os.sched_get_priority_min(policy)

Ruft den minimalen Prioritätswert für policy ab. policy ist eine der obigen Scheduling-Politik-Konstanten.

os.sched_get_priority_max(policy)

Ruft den maximalen Prioritätswert für policy ab. policy ist eine der obigen Scheduling-Politik-Konstanten.

os.sched_setscheduler(pid, policy, param, /)

Setzt die Scheduling-Politik für den Prozess mit PID pid. Eine pid von 0 bedeutet den aufrufenden Prozess. policy ist eine der obigen Scheduling-Politik-Konstanten. param ist eine Instanz von sched_param.

os.sched_getscheduler(pid, /)

Gibt die Scheduling-Politik für den Prozess mit PID pid zurück. Eine pid von 0 bedeutet den aufrufenden Prozess. Das Ergebnis ist eine der obigen Scheduling-Politik-Konstanten.

os.sched_setparam(pid, param, /)

Setzt die Scheduling-Parameter für den Prozess mit PID pid. Eine pid von 0 bedeutet den aufrufenden Prozess. param ist eine Instanz von sched_param.

os.sched_getparam(pid, /)

Gibt die Scheduling-Parameter als Instanz von sched_param für den Prozess mit PID pid zurück. Eine pid von 0 bedeutet den aufrufenden Prozess.

os.sched_rr_get_interval(pid, /)

Gibt das Round-Robin-Quantum in Sekunden für den Prozess mit PID pid zurück. Eine pid von 0 bedeutet den aufrufenden Prozess.

os.sched_yield()

Gibt die CPU freiwillig ab. Siehe sched_yield(2) für Details.

os.sched_setaffinity(pid, mask, /)

Beschränkt den Prozess mit PID pid (oder den aktuellen Prozess, falls 0) auf eine Menge von CPUs. mask ist ein iterierbares Objekt von Ganzzahlen, das die Menge der CPUs repräsentiert, auf die der Prozess beschränkt werden soll.

os.sched_getaffinity(pid, /)

Gibt die Menge der CPUs zurück, auf die der Prozess mit PID pid beschränkt ist.

Wenn pid Null ist, gib die Menge der CPUs zurück, auf die der aufrufende Thread des aktuellen Prozesses beschränkt ist.

Siehe auch die Funktion process_cpu_count().

Sonstige Systeminformationen

os.confstr(name, /)

Gibt zeichenkettenbasierte Systemkonfigurationswerte zurück. name spezifiziert den abzurufenden Konfigurationswert; es kann eine Zeichenkette sein, die der Name eines definierten Systemwerts ist; diese Namen sind in einer Reihe von Standards spezifiziert (POSIX, Unix 95, Unix 98 und andere). Einige Plattformen definieren auch zusätzliche Namen. Die vom Host-Betriebssystem bekannten Namen sind als Schlüssel des confstr_names-Wörterbuchs aufgeführt. Für Konfigurationsvariablen, die nicht in dieser Zuordnung enthalten sind, wird auch die Übergabe einer Ganzzahl für name akzeptiert.

Wenn der durch name spezifizierte Konfigurationswert nicht definiert ist, wird None zurückgegeben.

Wenn name eine Zeichenkette ist und nicht bekannt ist, wird ValueError ausgelöst. Wenn ein bestimmter Wert für name vom Host-System nicht unterstützt wird, auch wenn er in confstr_names enthalten ist, wird eine OSError mit errno.EINVAL als Fehler-Nummer ausgelöst.

os.confstr_names

Wörterbuch, das Namen, die von confstr() akzeptiert werden, den Ganzzahlwerten zuordnet, die für diese Namen vom Host-Betriebssystem definiert sind. Dies kann verwendet werden, um die Menge der vom System bekannten Namen zu ermitteln.

os.cpu_count()

Gibt die Anzahl der logischen CPUs im **System** zurück. Gibt None zurück, wenn nicht ermittelbar.

Die Funktion process_cpu_count() kann verwendet werden, um die Anzahl der logischen CPUs zu erhalten, die für den aufrufenden Thread des **aktuellen Prozesses** nutzbar sind.

Hinzugefügt in Version 3.4.

Geändert in Version 3.13: Wenn -X cpu_count angegeben ist oder PYTHON_CPU_COUNT gesetzt ist, gibt cpu_count() den überschriebenen Wert n zurück.

os.getloadavg()

Gibt die durchschnittliche Anzahl von Prozessen in der System-Run-Queue über die letzten 1, 5 und 15 Minuten zurück, oder löst eine OSError aus, wenn die Auslastung nicht ermittelt werden konnte.

os.process_cpu_count()

Ruft die Anzahl der logischen CPUs ab, die für den aufrufenden Thread des **aktuellen Prozesses** nutzbar sind. Gibt None zurück, wenn nicht ermittelbar. Kann kleiner als cpu_count() sein, abhängig von der CPU-Affinität.

Die Funktion cpu_count() kann verwendet werden, um die Anzahl der logischen CPUs im **System** zu erhalten.

Wenn -X cpu_count angegeben ist oder PYTHON_CPU_COUNT gesetzt ist, gibt process_cpu_count() den überschriebenen Wert n zurück.

Siehe auch die Funktion sched_getaffinity().

Hinzugefügt in Version 3.13.

os.sysconf(name, /)

Gibt ganzzahlige Systemkonfigurationswerte zurück. Wenn der durch name angegebene Konfigurationswert nicht definiert ist, wird -1 zurückgegeben. Die Kommentare bezüglich des name-Parameters für confstr() gelten auch hier; das Wörterbuch, das Informationen über die bekannten Namen liefert, ist sysconf_names.

os.sysconf_names

Wörterbuch, das von sysconf() akzeptierte Namen auf die ganzzahligen Werte abbildet, die für diese Namen vom Host-Betriebssystem definiert sind. Dies kann verwendet werden, um den Satz der dem System bekannten Namen zu ermitteln.

Geändert in Version 3.11: Name 'SC_MINSIGSTKSZ' hinzugefügt.

Die folgenden Datenwerte werden zur Unterstützung von Pfadmanipulationsoperationen verwendet. Diese sind für alle Plattformen definiert.

Übergeordnete Operationen mit Pfadnamen sind im Modul os.path definiert.

os.curdir

Die Konstante Zeichenkette, die vom Betriebssystem verwendet wird, um das aktuelle Verzeichnis zu bezeichnen. Dies ist '.' für Windows und POSIX. Auch über os.path verfügbar.

os.pardir

Die Konstante Zeichenkette, die vom Betriebssystem verwendet wird, um das übergeordnete Verzeichnis zu bezeichnen. Dies ist '..' für Windows und POSIX. Auch über os.path verfügbar.

os.sep

Das Zeichen, das vom Betriebssystem verwendet wird, um Pfadkomponenten zu trennen. Dies ist '/' für POSIX und '\\' für Windows. Beachten Sie, dass das Wissen um dieses Zeichen nicht ausreicht, um Pfadnamen zu parsen oder zu verknüpfen – verwenden Sie os.path.split() und os.path.join() – aber es ist gelegentlich nützlich. Auch über os.path verfügbar.

os.altsep

Ein alternatives Zeichen, das vom Betriebssystem zur Trennung von Pfadkomponenten verwendet wird, oder None, wenn nur ein Trennzeichen existiert. Dies ist unter Windows-Systemen, auf denen sep ein Backslash ist, auf '/' gesetzt. Auch über os.path verfügbar.

os.extsep

Das Zeichen, das den Basisdateinamen von der Erweiterung trennt; zum Beispiel der '.' in os.py. Auch über os.path verfügbar.

os.pathsep

Das Zeichen, das vom Betriebssystem konventionell zur Trennung von Suchpfadkomponenten (wie in PATH) verwendet wird, z. B. ':' für POSIX oder ';' für Windows. Auch über os.path verfügbar.

os.defpath

Der Standard-Suchpfad, der von exec*p* und spawn*p* verwendet wird, wenn die Umgebung keinen 'PATH'-Schlüssel hat. Auch über os.path verfügbar.

os.linesep

Die Zeichenkette, die zur Trennung (oder besser gesagt, zum Beenden) von Zeilen auf der aktuellen Plattform verwendet wird. Dies kann ein einzelnes Zeichen sein, wie z. B. '\n' für POSIX, oder mehrere Zeichen, z. B. '\r\n' für Windows. Verwenden Sie nicht os.linesep als Zeilenende beim Schreiben von Dateien, die im Textmodus (Standard) geöffnet sind; verwenden Sie stattdessen ein einzelnes '\n' auf allen Plattformen.

os.devnull

Der Dateipfad des Null-Geräts. Zum Beispiel: '/dev/null' für POSIX, 'nul' für Windows. Auch über os.path verfügbar.

os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

Flags zur Verwendung mit den Funktionen setdlopenflags() und getdlopenflags(). Informationen darüber, was die verschiedenen Flags bedeuten, finden Sie in der Unix-Handbuchseite dlopen(3).

Hinzugefügt in Version 3.3.

Zufallszahlen

os.getrandom(size, flags=0)

Bis zu size zufällige Bytes erhalten. Die Funktion kann weniger Bytes als angefordert zurückgeben.

Diese Bytes können zum Seeden von User-Space-Zufallszahlengeneratoren oder für kryptografische Zwecke verwendet werden.

getrandom() stützt sich auf Entropie, die aus Gerätetreibern und anderen Quellen von Umgebungsrauschen gesammelt wird. Das unnötige Lesen großer Datenmengen wirkt sich negativ auf andere Benutzer der Geräte /dev/random und /dev/urandom aus.

Das Argument flags ist eine Bitmaske, die null oder mehr der folgenden Werte enthalten kann, die miteinander verknüpft sind: os.GRND_RANDOM und GRND_NONBLOCK.

Siehe auch die Linux getrandom() Handbuchseite.

Verfügbarkeit: Linux >= 3.17.

Hinzugefügt in Version 3.6.

os.urandom(size, /)

Gibt eine Bytesequenz von size zufälligen Bytes zurück, die für kryptografische Zwecke geeignet sind.

Diese Funktion gibt zufällige Bytes aus einer OS-spezifischen Zufallsquelle zurück. Die zurückgegebenen Daten sollten für kryptografische Anwendungen unvorhersehbar genug sein, obwohl ihre genaue Qualität von der OS-Implementierung abhängt.

Unter Linux wird, wenn der getrandom() syscall verfügbar ist, dieser im Blockierungsmodus verwendet: Er blockiert, bis der Zufallszahlengenerator-Entropiepool des Systems initialisiert ist (128 Bit Entropie wurden vom Kernel gesammelt). Siehe PEP 524 für die Begründung. Unter Linux kann die Funktion getrandom() verwendet werden, um Zufallsbytes im nicht-blockierenden Modus zu erhalten (mit dem Flag GRND_NONBLOCK) oder um zu pollieren, bis der Zufallszahlengenerator-Entropiepool des Systems initialisiert ist.

Auf einem Unix-ähnlichen System werden zufällige Bytes aus dem Gerät /dev/urandom gelesen. Wenn das Gerät /dev/urandom nicht verfügbar oder nicht lesbar ist, wird die Ausnahme NotImplementedError ausgelöst.

Unter Windows wird BCryptGenRandom() verwendet.

Siehe auch

Das Modul secrets bietet übergeordnete Funktionen. Für eine einfach zu bedienende Schnittstelle zum Zufallszahlengenerator Ihrer Plattform siehe random.SystemRandom.

Geändert in Version 3.5: Unter Linux 3.17 und neuer wird nun der getrandom() syscall verwendet, wenn verfügbar. Unter OpenBSD 5.6 und neuer wird nun die C-Funktion getentropy() verwendet. Diese Funktionen vermeiden die Verwendung eines internen Dateideskriptors.

Geändert in Version 3.5.2: Unter Linux, wenn der getrandom() syscall blockiert (der Zufallszahlengenerator-Entropiepool ist noch nicht initialisiert), wird auf das Lesen von /dev/urandom zurückgegriffen.

Geändert in Version 3.6: Unter Linux wird getrandom() nun im Blockierungsmodus verwendet, um die Sicherheit zu erhöhen.

Geändert in Version 3.11: Unter Windows wird BCryptGenRandom() anstelle von CryptGenRandom() verwendet, was veraltet ist.

os.GRND_NONBLOCK

Standardmäßig blockiert getrandom() beim Lesen von /dev/random, wenn keine Zufallsbytes verfügbar sind, und blockiert beim Lesen von /dev/urandom, wenn der Entropiepool noch nicht initialisiert wurde.

Wenn das Flag GRND_NONBLOCK gesetzt ist, blockiert getrandom() in diesen Fällen nicht, sondern löst sofort BlockingIOError aus.

Hinzugefügt in Version 3.6.

os.GRND_RANDOM

Wenn dieses Bit gesetzt ist, werden Zufallsbytes aus dem Pool von /dev/random anstelle des Pools von /dev/urandom gezogen.

Hinzugefügt in Version 3.6.