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
osverfü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
osnicht 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 wiegetuid()undgetpid()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.
- os.name¶
Der Name des importierten betriebssystemabhängigen Moduls. Die folgenden Namen wurden bisher registriert:
'posix','nt','java'.Siehe auch
sys.platformhat eine feinere Granularität.os.uname()gibt systemabhängige Versionsinformationen zurück.Das Modul
platformbietet 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
Verwendet UTF-8 als Dateisystemkodierung.
sys.getfilesystemencoding()gibt'utf-8'zurück.locale.getpreferredencoding()gibt'utf-8'zurück (das Argument do_setlocale hat keine Auswirkung).sys.stdin,sys.stdoutundsys.stderrverwenden alle UTF-8 als ihre Textkodierung, wobei die Fehlerbehandlungsurrogateescapefürsys.stdinundsys.stdoutaktiviert ist (sys.stderrverwendet weiterhinbackslashreplace, wie es im Standardmodus mit Locale-Bewusstsein der Fall ist).Unter Unix gibt
os.device_encoding()'utf-8'zurück anstelle der Geräte-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()undos.fsencode()verwenden die UTF-8-Kodierung.open(),io.open()undcodecs.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 entsprichtgetenv("HOME")in C.Dieses Mapping wird erfasst, wenn das Modul
oszum ersten Mal importiert wird, normalerweise beim Start von Python als Teil der Verarbeitung vonsite.py. Änderungen an der Umgebung, die nach diesem Zeitpunkt vorgenommen werden, spiegeln sich nicht inos.environwider, außer Änderungen, die durch direkte Modifizierung vonos.environvorgenommen 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 Sieenvironb, 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()ändertos.environnicht, daher ist es besser,os.environzu ändern.Hinweis
Auf einigen Plattformen, einschließlich FreeBSD und macOS, kann das Setzen von
environzu Speicherlecks führen. Beachten Sie die Systemdokumentation fürputenv().Sie können Elemente aus diesem Mapping löschen, um Umgebungsvariablen zu unsetten.
unsetenv()wird automatisch aufgerufen, wenn ein Element ausos.environgelöscht wird und wenn eine der Methodenpop()oderclear()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 Wertebytes-Objekte sind, die die Prozessumgebung darstellen.environundenvironbsind synchronisiert (die Modifizierung vonenvironbaktualisiertenvironund umgekehrt).environbist nur verfügbar, wennsupports_bytes_environTrueist.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.environundos.environbsind ein Cache von Umgebungsvariablen zum Zeitpunkt des Programmstarts. Daher werden Änderungen an der aktuellen Prozessumgebung, die außerhalb von Python oder durchos.putenv()oderos.unsetenv()vorgenommen werden, nicht reflektiert. Verwenden Sieos.reload_environ(), umos.environundos.environbmit 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.environoderos.environboder das Aufrufen vonos.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
byteszurü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.PathLikeimplementieren.
- os.fsdecode(filename)¶
Dekodiert das pfadähnliche filename aus der Dateisystemkodierung und Fehlerbehandlung; gibt unveränderte
strzurü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.PathLikeimplementieren.
- os.fspath(path)¶
Gibt die Dateisystemrepräsentation des Pfades zurück.
Wenn
stroderbytesübergeben wird, wird sie unverändert zurückgegeben. Andernfalls wird__fspath__()aufgerufen und dessen Wert zurückgegeben, solange es sich um einstr- oderbytes-Objekt handelt. In allen anderen Fällen wirdTypeErrorausgelö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.
- 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.environverwendet, die Abbildung vongetenv()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 Sieos.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.environbverwendet, die Abbildung vongetenvb()ebenfalls beim Import erfasst wird und die Funktion zukünftige Umgebungsänderungen möglicherweise nicht widerspiegelt.getenvb()ist nur verfügbar, wennsupports_bytes_environTrueist.Verfügbarkeit: Unix.
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
Noneist,environverwendet.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 von10.5oder früher erstellt wurde, gibtgetgroups()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 vonsetgroups()geändert werden, wenn ausreichende Privilegien vorhanden sind. Wenn mit einem Deployment-Ziel größer als10.5erstellt, gibtgetgroups()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 vonsetgroups()nicht beeinflusst und ihre Länge ist nicht auf 16 begrenzt. Der Wert des Deployment-Ziels,MACOSX_DEPLOYMENT_TARGET, kann mitsysconfig.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 UmgebungsvariablenLOGNAMEoderUSERNAMEprüft, um herauszufinden, wer der Benutzer ist, und aufpwd.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_PGRPoderPRIO_USER, und who wird relativ zu which interpretiert (eine Prozess-ID fürPRIO_PROCESS, eine Prozessgruppen-ID fürPRIO_PGRPund eine Benutzer-ID fürPRIO_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()undsetpriority().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()undsetpriority().Verfügbarkeit: macOS
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()oderfork()undexecv()gestartet werden.Zuweisungen zu Einträgen in
os.environwerden automatisch in entsprechende Aufrufe vonputenv()übersetzt; Aufrufe vonputenv()aktualisieren jedoch nichtos.environ, daher ist es tatsächlich vorzuziehen, Elemente vonos.environzuzuweisen. Dies gilt auch fürgetenv()undgetenvb(), die in ihren Implementierungen jeweilsos.environundos.environbverwenden.Siehe auch die Funktion
os.reload_environ().Hinweis
Auf einigen Plattformen, einschließlich FreeBSD und macOS, kann das Setzen von
environzu Speicherlecks führen. Beachten Sie die Systemdokumentation fürputenv().Löst ein Auditing-Ereignis
os.putenvmit den Argumentenkey,valueaus.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, ordnetsetns()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 (0bedeutet keine Einschränkungen).Seit Linux 5.8 kann fd auf einen PID-Dateideskriptor verweisen, der von
pidfd_open()erhalten wurde. In diesem Fall ordnetsetns()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 zufd = 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()odersetpgrp(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_PGRPoderPRIO_USER, und who wird relativ zu which interpretiert (eine Prozess-ID fürPRIO_PROCESS, eine Prozessgruppen-ID fürPRIO_PGRPund eine Benutzer-ID fürPRIO_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 FehlercodeNULLzurückgibt, wird einValueErrorausgelöst.
- os.supports_bytes_environ¶
True, wenn der native OS-Typ der Umgebung Bytes ist (z. B.Falseunter 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 Betriebssystemsnodename- Name des Computers im Netzwerk (implementierungsabhängig)release- Betriebssystem-Releaseversion- Betriebssystemversionmachine- Hardware-Identifikator
Aus Kompatibilitätsgründen ist dieses Objekt auch iterierbar und verhält sich wie ein Fünfer-Tupel, das
sysname,nodename,release,versionundmachinein dieser Reihenfolge enthält.Einige Systeme kürzen
nodenameauf 8 Zeichen oder auf die erste Komponente; ein besserer Weg, den Hostnamen zu erhalten, istsocket.gethostname()oder sogarsocket.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.Verfügbarkeit: Unix.
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()oderfork()undexecv()gestartet werden.Löschen von Einträgen in
os.environwird automatisch in einen entsprechenden Aufruf vonunsetenv()übersetzt; Aufrufe vonunsetenv()aktualisieren jedoch nichtos.environ, daher ist es tatsächlich vorzuziehen, Einträge ausos.environzu löschen.Siehe auch die Funktion
os.reload_environ().Löst ein Auditing-Ereignis
os.unsetenvmit dem Argumentkeyaus.Geändert in Version 3.9: Die Funktion ist jetzt immer verfügbar und auch unter Windows verfügbar.
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
0ist, 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().
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 vonfdopen()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()oderpipe()zurückgegeben wurde. Um ein „Datei-Objekt“ zu schließen, das von der eingebauten Funktionopen()oder vonpopen()oderfdopen()zurückgegeben wurde, verwenden Sie dessenclose()-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
Noneist, 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
OSErrormiterrnoauferrno.EXDEVgesetzt 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
Nonezurü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
Falseist.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
Nonezurü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 zuos.chmod(fd, mode).Löst ein Auditing-Ereignis
os.chmodmit den Argumentenpath,mode,dir_fdaus.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 zuos.chown(fd, uid, gid).Löst ein Auditing-Ereignis
os.chownmit den Argumentenpath,uid,gid,dir_fdaus.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.
Verfügbarkeit: Unix.
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_namesaufgefü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
ValueErrorausgelöst. Wenn ein bestimmter Wert für name vom Hostsystem nicht unterstützt wird, auch wenn er inpathconf_namesenthalten ist, wird eineOSErrormiterrno.EINVALfür die Fehlernummer ausgelöst.Ab Python 3.3 ist dies äquivalent zu
os.pathconf(fd, name).Verfügbarkeit: Unix.
- 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 zuos.statvfs(fd).Verfügbarkeit: Unix.
- 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 dannos.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.truncatemit den Argumentenfd,lengthaus.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 FlagO_NONBLOCKgesetzt ist,True, wenn das Flag gelöscht ist.Siehe auch
set_blocking()undsocket.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
Truezurück, wenn der Dateideskriptor fd geöffnet und mit einem TTY-ähnlichen Gerät verbunden ist, andernfallsFalse.
- 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_ULOCKoderF_TEST. len gibt den zu sperrenden Abschnitt der Datei an.Löst ein Auditing-Ereignis
os.lockfmit den Argumentenfd,cmd,lenaus.Verfügbarkeit: Unix.
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.Verfügbarkeit: Unix.
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_SEToder0– setzt pos relativ zum Anfang der DateiSEEK_CURoder1– setzt pos relativ zur aktuellen DateipositionSEEK_ENDoder2– setzt pos relativ zum Ende der DateiSEEK_HOLE– setzt pos auf die nächste Datenstelle, relativ zu posSEEK_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_HOLEundSEEK_DATAhinzugefügt.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Parameter für die Funktion
lseek()und die Methodeseek()für Datei-ähnliche Objekte, für whence zur Anpassung des Dateizeigers.SEEK_SETPassen Sie die Dateiposition relativ zum Dateianfang an.
SEEK_CURPassen Sie die Dateiposition relativ zur aktuellen Dateiposition an.
SEEK_ENDPassen 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 Methodeseek()für dateiähnliche Objekte, zum Suchen von Dateidaten und Lücken in spärlich zugewiesenen Dateien.SEEK_DATAPassen Sie den Dateioffset relativ zur Suchposition auf den nächsten Speicherort mit Daten an.
SEEK_HOLEPassen 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_RDONLYundO_WRONLY) sind im Modulosdefiniert. Insbesondere unter Windows mussO_BINARYhinzugefü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
openmit den Argumentenpath,mode,flagsaus.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 Methodenread()undwrite()(und vielen mehr) zurückgibt. Um einen Dateideskriptor in ein Datei-Objekt zu verpacken, verwenden Siefdopen().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_CLOEXEChinzugefü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_SYMLINK¶
- 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_SYMLINKundO_NOFOLLOW_ANYwurden 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.
- 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 Modulpty.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.
Verfügbarkeit: Unix.
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_WILLNEEDoderPOSIX_FADV_DONTNEED.Verfügbarkeit: Unix.
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.Verfügbarkeit: Unix.
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.
Verfügbarkeit: Unix.
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 Funktionposix_openpt()Ihres Systems angegeben.Der zurückgegebene Dateideskriptor ist nicht vererbbar. Wenn der Wert
O_CLOEXECauf 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()undos.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
-1zurück und setzt errno auferrno.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_DIRECTgeö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-Standardbibliotheksfunktionptsname()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.
Verfügbarkeit: Unix.
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()undos.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_DSYNCvonos.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_SYNCvonos.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_APPENDvonos.open(). Dieses Flag ist nur füros.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-1ist, 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()oderpipe()zurückgegeben wird. Um ein von der integrierten Funktionopen()oder vonpopen()oderfdopen(), odersys.stdinzurückgegebenes "Datei-Objekt" zu lesen, verwenden Sie dessen Methodenread()oderreadline().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()oderos.pipe()zurückgegeben wird. Um ein von der integrierten Funktionopen()zurückgegebenes "Datei-Objekt" odersys.stdinzu lesen, verwenden Sie dessen Mitgliedsfunktionen, zum Beispielio.BufferedIOBase.readinto(),io.BufferedIOBase.read()oderio.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
0zurückgegeben.Die erste Funktionssignatur wird von allen Plattformen unterstützt, die
sendfile()definieren.Unter Linux wird, wenn offset als
Noneangegeben 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
0fü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()siehesocket.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 blockingFalseist, löscht das Flag andernfalls.Siehe auch
get_blocking()undsocket.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_MOVEangegeben 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_NONBLOCKangegeben 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_MOREangegeben 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
Noneist, wird src ab der aktuellen Position gelesen; entsprechend für offset_dst. Der Offset, der dem Dateideskriptor einer Pipe zugeordnet ist, mussNonesein. Die Dateien, auf die src und dst verweisen, müssen sich im selben Dateisystem befinden, andernfalls wird eineOSErrormiterrnoauferrno.EXDEVgesetzt 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.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.Verfügbarkeit: Unix.
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.
Verfügbarkeit: Unix.
- 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()oderpipe()zurückgegeben wird. Um ein von der integrierten Funktionopen()oder vonpopen()oderfdopen(), odersys.stdoutodersys.stderrzurückgegebenes "Datei-Objekt" zu schreiben, verwenden Sie dessenwrite()-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.Verfügbarkeit: Unix.
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_sizezurü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
OSErrorausgelöst.shutil.get_terminal_size()ist die höherwertige Funktion, die normalerweise verwendet werden sollte.os.get_terminal_sizeist die Low-Level-Implementierung.Verfügbarkeit: Unix, Windows.
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 mitfpräfigiert ist (z. B. Aufruf vonfchdiranstelle vonchdir).Sie können mit
os.supports_fdprü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 eineNotImplementedErroraus.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
Noneist, 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 Suffixatund möglicherweise dem Präfixfauf (z. B. Aufruf vonfaccessatanstelle vonaccess).Sie können mit
os.supports_dir_fdprü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 eineNotImplementedErroraus.
Symbolische Links nicht verfolgen: Wenn follow_symlinks auf
Falsegesetzt ist und das letzte Element des zu bearbeitenden Pfads ein symbolischer Link ist, operiert die Funktion auf dem symbolischen Link selbst und nicht auf der Datei, auf die der Link verweist. Für POSIX-Systeme ruft Python die Variante der Funktion mitl...auf.Sie können mit
os.supports_follow_symlinksprüfen, ob follow_symlinks für eine bestimmte Funktion auf Ihrer Plattform unterstützt wird. Wenn es nicht verfügbar ist, löst die Verwendung eineNotImplementedErroraus.
- 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_OKsein, um die Existenz von path zu testen, oder es kann die inklusive OR von einem oder mehreren vonR_OK,W_OKundX_OKsein, um Berechtigungen zu testen. GibtTruezurü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
Truegesetzt ist, führtaccess()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 mitos.supports_effective_idsprüfen, ob es verfügbar ist. Wenn es nicht verfügbar ist, löst die Verwendung eineNotImplementedErroraus.Hinweis
Die Verwendung von
access()zur Überprüfung, ob ein Benutzer z. B. berechtigt ist, eine Datei zu öffnen, bevor dies tatsächlich mitopen()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 Beispielif 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
OSErrorund Unterklassen wieFileNotFoundError,PermissionErrorundNotADirectoryErrorauslösen.Löst ein Audit-Ereignis
os.chdirmit dem Argumentpathaus.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
statModul definiert)Diese Funktion kann das Nicht-Folgen von Symlinks unterstützen.
Löst ein Audit-Ereignis
os.chflagsmit den Argumentenpath,flagsaus.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
statModul definiert) oder bitweise OR-Kombinationen davon enthaltenDiese 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 Konstantenstat.S_IWRITEundstat.S_IREADoder einen entsprechenden ganzzahligen Wert). Alle anderen Bits werden ignoriert. Der Standardwert für follow_symlinks ist unter WindowsFalse.Die Funktion ist unter WASI eingeschränkt, siehe WebAssembly-Plattformen für weitere Informationen.
Löst ein Auditing-Ereignis
os.chmodmit den Argumentenpath,mode,dir_fdaus.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.chownmit den Argumentenpath,uid,gid,dir_fdaus.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.chdirmit dem Argumentpathaus.Verfügbarkeit: Unix.
- 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 zuos.chflags(path, flags, follow_symlinks=False).Löst ein Audit-Ereignis
os.chflagsmit den Argumentenpath,flagsaus.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 zuos.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.chmodmit den Argumentenpath,mode,dir_fdaus.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.chownmit den Argumentenpath,uid,gid,dir_fdaus.Verfügbarkeit: Unix.
Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
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.linkmit den Argumentensrc,dst,src_dir_fd,dst_dir_fdaus.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
bytesist (direkt oder indirekt über diePathLike-Schnittstelle), sind die zurückgegebenen Dateinamen ebenfalls vom Typbytes; in allen anderen Fällen sind sie vom Typstr.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.listdirmit dem Argumentpathaus.Hinweis
Zur Kodierung von
str-Dateinamen inbytesverwenden Siefsencode().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
OSErrorauslösen, wenn beim Sammeln der Laufwerksnamen ein Fehler auftritt.Löst ein Audit-Ereignis
os.listdrivesohne 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
OSErroraus, wenn das Volume nicht erkannt wird oder wenn beim Sammeln der Pfade ein Fehler auftritt.Löst ein Audit-Ereignis
os.listmountsmit dem Argumentvolumeaus.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 mitos.listmounts()sein.Kann
OSErrorauslösen, wenn beim Sammeln der Volumes ein Fehler auftritt.Löst ein Audit-Ereignis
os.listvolumesohne 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 wiestat(), aber folgt keinen symbolischen Links. Gibt einstat_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
FileExistsErrorausgelöst. Wenn ein übergeordnetes Verzeichnis im Pfad nicht existiert, wirdFileNotFoundErrorausgelö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
0o700speziell 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 Funktiontempfile.mkdtemp().Löst ein Audit-Ereignis
os.mkdirmit den Argumentenpath,mode,dir_fdaus.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 vonmakedirs()setzen. Die Dateiberechtigungsbits bestehender übergeordneter Verzeichnisse werden nicht geändert.Wenn exist_ok
False(der Standardwert) ist, wirdFileExistsErrorausgelöst, wenn das Zielverzeichnis bereits existiert.Hinweis
makedirs()wird verwirrt, wenn die zu erstellenden Pfadelementepardir(z. B. „..“ unter UNIX-Systemen) enthalten.Diese Funktion verarbeitet UNC-Pfade korrekt.
Löst ein Audit-Ereignis
os.mkdirmit den Argumentenpath,mode,dir_fdaus.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
Truewar und das Verzeichnis existierte, würdemakedirs()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, dassmkfifo()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_IFBLKundstat.S_IFIFOkombiniert wird (diese Konstanten sind instatverfügbar). Fürstat.S_IFCHRundstat.S_IFBLKdefiniert device die neu erstellte Gerätedatei (wahrscheinlich mitos.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_devoderst_rdevvonstat).
- os.minor(device, /)¶
Extrahieren Sie die Minor-Gerätenummer aus einer Rohgerätenummer (normalerweise das Feld
st_devoderst_rdevvonstat).
- 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
ValueErrorausgelöst. Wenn ein bestimmter Wert für name vom Hostsystem nicht unterstützt wird, auch wenn er inpathconf_namesenthalten ist, wird eineOSErrormiterrno.EINVALfür die Fehlernummer ausgelöst.Diese Funktion kann die Angabe eines Dateideskriptors unterstützen.
Verfügbarkeit: Unix.
Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.
- os.pathconf_names¶
Wörterbuch, das die von
pathconf()undfpathconf()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.Verfügbarkeit: Unix.
- os.readlink(path, *, dir_fd=None)¶
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
OSErrorausgelöst. Verwenden Siermdir(), um Verzeichnisse zu entfernen. Wenn die Datei nicht existiert, wird eineFileNotFoundErrorausgelö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.removemit den Argumentenpath,dir_fdaus.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 entferntos.removedirs('foo/bar/baz')zuerst das Verzeichnis'foo/bar/baz'und dann'foo/bar'und'foo', wenn diese leer sind. LöstOSErroraus, wenn das Blattverzeichnis nicht erfolgreich entfernt werden konnte.Löst ein Audit-Ereignis
os.removemit den Argumentenpath,dir_fdaus.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
OSErrorfehl.Unter Windows wird bei vorhandenem dst immer eine
FileExistsErrorausgelöst. Die Operation kann fehlschlagen, wenn src und dst auf unterschiedlichen Dateisystemen liegen. Verwenden Sieshutil.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
IsADirectoryErroroder eineNotADirectoryErrorentsprechend ausgelöst. Wenn beides Verzeichnisse sind und dst leer ist, wird dst stillschweigend ersetzt. Wenn dst ein nicht-leeres Verzeichnis ist, wird eineOSErrorausgelö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.renamemit den Argumentensrc,dst,src_dir_fd,dst_dir_fdaus.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, mitremovedirs()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.renamemit den Argumentensrc,dst,src_dir_fd,dst_dir_fdaus.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
OSErrorausgelö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.renamemit den Argumentensrc,dst,src_dir_fd,dst_dir_fdaus.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
FileNotFoundErroroder eineOSErrorentsprechend ausgelöst. Um ganze Verzeichnisbäume zu entfernen, kannshutil.rmtree()verwendet werden.Diese Funktion kann Pfade relativ zu Verzeichnisskriptoren unterstützen.
Löst ein Audit-Ereignis
os.rmdirmit den Argumentenpath,dir_fdaus.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 vonlistdir()kann die Leistung von Code, der auch Datei-Typ- oder Dateiattributinformationen benötigt, erheblich steigern, daos.DirEntry-Objekte diese Informationen preisgeben, wenn das Betriebssystem sie beim Scannen eines Verzeichnisses bereitstellt. Alle Methoden vonos.DirEntrykönnen einen Systemaufruf ausführen, aberis_dir()undis_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
bytesist (direkt oder indirekt über diePathLike-Schnittstelle), ist der Typ desname- undpath-Attributs jedesos.DirEntrybytes; in allen anderen Fällen ist er vom Typstr.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.scandirmit dem Argumentpathaus.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 vonentry.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 einscandir()-Iterator weder erschöpft noch explizit geschlossen wird, wird in seinem Destruktor eineResourceWarningausgegeben.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 einstat()- oderlstat()-Systemaufruf erfolgt, speichert dasos.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 vonscandir()viel Zeit vergangen ist, rufen Sieos.stat(entry.path)auf, um aktuelle Informationen abzurufen.Da die Methoden von
os.DirEntryBetriebssystemaufrufe tätigen können, können sie auchOSErrorauslösen. Wenn Sie eine sehr feinkörnige Kontrolle über Fehler benötigen, können SieOSErrorbeim Aufruf einer deros.DirEntry-Methoden abfangen und entsprechend behandeln.Um direkt als Pfad-ähnliches Objekt verwendbar zu sein, implementiert
os.DirEntrydie SchnittstellePathLike.Attribute und Methoden einer Instanz von
os.DirEntrysind wie folgt- name¶
Der Basisdateiname des Eintrags, relativ zum
scandir()-Argument path.Das Attribut
nameistbytes, wenn dasscandir()-Argument path vom Typbytesist, und andernfallsstr. Verwenden Siefsdecode(), um Byte-Dateinamen zu dekodieren.
- path¶
Der vollständige Pfadname des Eintrags: entspricht
os.path.join(scandir_path, entry.name), wobei scandir_path dasscandir()-Argument path ist. Der Pfad ist nur absolut, wenn dasscandir()-Argument path absolut war. Wenn dasscandir()-Argument path ein Dateideskriptor war, ist das Attributpathdasselbe wie das Attributname.Das Attribut
pathistbytes, wenn dasscandir()-Argument path vom Typbytesist, und andernfallsstr. Verwenden Siefsdecode(), um Byte-Dateinamen zu dekodieren.
- inode()¶
Gibt die Inode-Nummer des Eintrags zurück.
Das Ergebnis wird im
os.DirEntry-Objekt zwischengespeichert. Verwenden Sieos.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
Truezurück, wenn dieser Eintrag ein Verzeichnis oder ein symbolischer Link ist, der auf ein Verzeichnis zeigt; gibtFalsezurück, wenn der Eintrag eine andere Art von Datei ist oder darauf zeigt, oder wenn er nicht mehr existiert.Wenn follow_symlinks
Falseist, gibtTruenur dann zurück, wenn dieser Eintrag ein Verzeichnis ist (ohne symbolische Links zu folgen); gibtFalsezurück, wenn der Eintrag eine andere Art von Datei ist oder nicht mehr existiert.Das Ergebnis wird im Objekt
os.DirEntryzwischengespeichert, wobei ein separater Cache für follow_symlinksTrueundFalseexistiert. Rufen Sieos.stat()zusammen mitstat.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_UNKNOWNzurückgeben. Wenn der Eintrag ein Symlink ist, ist ein Systemaufruf erforderlich, um dem Symlink zu folgen, es sei denn, follow_symlinks istFalse.Diese Methode kann
OSErrorauslösen, wie z. B.PermissionError, aberFileNotFoundErrorwird abgefangen und nicht ausgelöst.
- is_file(*, follow_symlinks=True)¶
Gibt
Truezurück, wenn dieser Eintrag eine Datei oder ein symbolischer Link zu einer Datei ist; gibtFalsezurü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
Falseist, gibtTruezurück, nur wenn dieser Eintrag eine Datei ist (ohne Symlinks zu folgen); gibtFalsezurü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.DirEntryzwischengespeichert. Das Caching, die durchgeführten Systemaufrufe und die ausgelösten Ausnahmen entsprechen denen vonis_dir().
- is_symlink()¶
Gibt
Truezurück, wenn dieser Eintrag ein symbolischer Link ist (auch wenn er defekt ist); gibtFalsezurü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.DirEntryzwischengespeichert. Rufen Sieos.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_UNKNOWNzurückgeben.Diese Methode kann
OSErrorauslösen, wie z. B.PermissionError, aberFileNotFoundErrorwird abgefangen und nicht ausgelöst.
- is_junction()¶
Gibt
Truezurück, wenn dieser Eintrag eine Verzweigung (Junction) ist (auch wenn sie defekt ist); gibtFalsezurü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.DirEntryzwischengespeichert. Rufen Sieos.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 Argumentfollow_symlinks=Falsehinzu.Unter Unix erfordert diese Methode immer einen Systemaufruf. Unter Windows erfordert sie nur dann einen Systemaufruf, wenn follow_symlinks
Trueist und der Eintrag ein Reparse Point ist (z. B. ein symbolischer Link oder ein Verzeichnispunkt).Unter Windows werden die Attribute
st_ino,st_devundst_nlinkdesstat_resultimmer auf Null gesetzt. Rufen Sieos.stat()auf, um diese Attribute zu erhalten.Das Ergebnis wird im Objekt
os.DirEntryzwischengespeichert, mit einem separaten Cache für follow_symlinksTrueundFalse. Rufen Sieos.stat()auf, um aktuelle Informationen abzurufen.
Beachten Sie, dass es eine gute Entsprechung zwischen mehreren Attributen und Methoden von
os.DirEntryund denen vonpathlib.Pathgibt. Insbesondere hat das Attributnamedieselbe Bedeutung wie die Methodenis_dir(),is_file(),is_symlink(),is_junction()undstat().Hinzugefügt in Version 3.5.
Geändert in Version 3.6: Unterstützung für die
PathLike-Schnittstelle hinzugefügt. Unterstützung fürbytes-Pfade unter Windows hinzugefügt.Geändert in Version 3.12: Das Attribut
st_ctimeeines Stat-Ergebnisses ist unter Windows veraltet. Die Erstellungszeit der Datei ist alsst_birthtimeverfügbar, und in Zukunft kannst_ctimeso 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 diePathLike-Schnittstelle – oder als offener Dateideskriptor. Gibt einstat_result-Objekt zurück.Diese Funktion folgt normalerweise Symlinks. Um einen Symlink zu staten, fügen Sie das Argument
follow_symlinks=Falsehinzu oder verwenden Sielstat().Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.
Unter Windows deaktiviert die Übergabe von
follow_symlinks=Falsedas 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 Funktionos.path.realpath(), um den Pfadnamen so weit wie möglich aufzulösen, und rufen Sielstat()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
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=Falsedeaktiviert 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ärefollow_symlinks=Falseangegeben 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 vonos.stat(),os.fstat()undos.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. Typischerweisedie Inode-Nummer unter Unix,
der Dateiindex unter Windows
- st_dev¶
Identifikator des Geräts, auf dem sich diese Datei befindet.
- st_nlink¶
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_ctimeist unter Windows veraltet. Verwenden Siest_birthtimefür die Erstellungszeit der Datei. In Zukunft wirdst_ctimedie 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_nsist unter Windows veraltet. Verwenden Siest_birthtime_nsfür die Erstellungszeit der Datei. In Zukunft wirdst_ctimedie 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
AttributeErrorauslösen.Geändert in Version 3.12:
st_birthtimeist 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
AttributeErrorauslösen.Hinzugefügt in Version 3.12.
Hinweis
Die genaue Bedeutung und Auflösung der Attribute
st_atime,st_mtime,st_ctimeundst_birthtimehängt vom Betriebssystem und dem Dateisystem ab. Beispielsweise haben unter Windows-Systemen mit FAT32-Dateisystemenst_mtimeeine Auflösung von 2 Sekunden undst_atimenur eine Auflösung von 1 Tag. Details finden Sie in der Dokumentation Ihres Betriebssystems.Ebenso bieten
st_atime_ns,st_mtime_ns,st_ctime_nsundst_birthtime_nszwar immer Nanosekunden, aber viele Systeme bieten keine Nanosekundenpräzision. Auf Systemen, die Nanosekundenpräzision bieten, kann das Fließkommaobjekt, das zur Speicherung vonst_atime,st_mtime,st_ctimeundst_birthtimeverwendet wird, nicht die gesamte Präzision beibehalten und ist daher leicht ungenau. Wenn Sie die exakten Zeitstempel benötigen, sollten Sie immerst_atime_ns,st_mtime_ns,st_ctime_nsundst_birthtime_nsverwenden.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
dwFileAttributesderBY_HANDLE_FILE_INFORMATION-Struktur, die vonGetFileInformationByHandle()zurückgegeben wird. Siehe die KonstantenFILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>imstat-Modul.Hinzugefügt in Version 3.5.
- st_reparse_tag¶
Wenn
st_file_attributesdas FlagFILE_ATTRIBUTE_REPARSE_POINTgesetzt hat, enthält dieses Feld den Tag, der den Typ des Reparse-Points identifiziert. Siehe die KonstantenIO_REPARSE_TAG_*imstat-Modul.
Das Standardmodul
statdefiniert Funktionen und Konstanten, die nützlich sind, um Informationen aus einerstat-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 derstat-Struktur in der Reihenfolgest_mode,st_ino,st_dev,st_nlink,st_uid,st_gid,st_size,st_atime,st_mtime,st_ctimeenthält. Weitere Elemente können von einigen Implementierungen am Ende hinzugefügt werden. Aus Kompatibilitätsgründen mit älteren Python-Versionen gibt der Zugriff aufstat_resultals Tupel immer Ganzzahlen zurück.Geändert in Version 3.5: Windows gibt nun den Dateiindex als
st_inozurück, wenn verfügbar.Geändert in Version 3.7: Das Mitglied
st_fstypewurde für Solaris/Derivate hinzugefügt.Geändert in Version 3.8: Das Mitglied
st_reparse_tagwurde unter Windows hinzugefügt.Geändert in Version 3.8: Unter Windows identifiziert das Mitglied
st_modenun spezielle Dateien alsS_IFCHR,S_IFIFOoderS_IFBLK, je nach Fall.Geändert in Version 3.12: Unter Windows ist
st_ctimeveraltet. 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 Siest_birthtimefür die Erstellungszeit.Unter Windows kann
st_inoje 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_rdevkeinen Wert mehr zurück. Zuvor enthielt es dasselbe wiest_dev, was falsch war.Das Mitglied
st_birthtimewurde 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 derstatvfs-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_flagdefiniert: WennST_RDONLYgesetzt ist, ist das Dateisystem schreibgeschützt gemountet, und wennST_NOSUIDgesetzt 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.
Verfügbarkeit: Unix.
Geändert in Version 3.2: Die Konstanten
ST_RDONLYundST_NOSUIDwurden 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_NODIRATIMEundST_RELATIMEwurden hinzugefügt.Geändert in Version 3.6: Akzeptiert ein pfadähnliches Objekt.
Geändert in Version 3.7: Das Attribut
f_fsidwurde hinzugefügt.
- os.supports_dir_fd¶
Ein
set-Objekt, das angibt, welche Funktionen imos-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 vonNonefü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
inaufsupports_dir_fd. Zum Beispiel ergibt der AusdruckTrue, wennos.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, obos.access()die Angabe vonTruefür seinen effective_ids-Parameter auf der lokalen Plattform zulässt. (Die Angabe vonFalsefür effective_ids wird auf allen Plattformen immer unterstützt.) Wenn die lokale Plattform dies unterstützt, enthält die Sammlungos.access(); andernfalls ist sie leer.Dieser Ausdruck ergibt
True, wennos.access()effective_ids=Trueauf 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 imos-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
inaufsupports_fd. Zum Beispiel ergibt der AusdruckTrue, wennos.chdir()offene Dateideskriptoren für path auf Ihrer lokalen Plattform akzeptiert.os.chdir in os.supports_fd
Hinzugefügt in Version 3.3.
- os.supports_follow_symlinks¶
Ein
set-Objekt, das angibt, welche Funktionen imos-ModulFalsefü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 vonTruefür follow_symlinks wird auf allen Plattformen immer unterstützt.)Um zu überprüfen, ob eine bestimmte Funktion
Falsefür ihren follow_symlinks-Parameter akzeptiert, verwenden Sie den Operatorinaufsupports_follow_symlinks. Zum Beispiel ergibt der AusdruckTrue, wenn Sie beim Aufruf vonos.stat()auf der lokalen Plattformfollow_symlinks=Falseangeben können.os.stat in os.supports_follow_symlinks
Hinzugefügt in Version 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
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
Trueist, 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.
OSErrorwird ausgelöst, wenn die Funktion von einem nicht privilegierten Benutzer aufgerufen wird.Löst ein Audit-Ereignis
os.symlinkmit den Argumentensrc,dst,dir_fdaus.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.
Verfügbarkeit: Unix.
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.truncatemit den Argumentenpath,lengthaus.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.
- os.unlink(path, *, dir_fd=None)¶
Entfernt (löscht) die Datei path. Diese Funktion ist semantisch identisch mit
remove(); der Nameunlinkist sein traditioneller Unix-Name. Weitere Informationen finden Sie in der Dokumentation fürremove().Löst ein Audit-Ereignis
os.removemit den Argumentenpath,dir_fdaus.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
Noneist, 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
Noneist und ns nicht angegeben ist, ist dies gleichbedeutend mit der Angabe vonns=(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; siehestat(). Der beste Weg, genaue Zeiten zu erhalten, ist die Verwendung der Felder st_atime_ns und st_mtime_ns aus dem Ergebnisobjekt vonos.stat()mit dem Parameter ns fürutime().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.utimemit den Argumentenpath,times,ns,dir_fdaus.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 Sieos.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
Trueist 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 topdownFalseist, 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
Trueist, kann der Aufrufer die Liste dirnames direkt ändern (vielleicht mitdeloder Slice-Zuweisung), undwalk()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 sogarwalk()über vom Aufrufer erstellte oder umbenannte Verzeichnisse zu informieren, bevor eswalk()wieder aufnimmt. Das Ändern von dirnames, wenn topdownFalseist, 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, einerOSError-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 Attributfilenamedes Ausnahmeobjekts verfügbar ist.Standardmäßig durchläuft
walk()keine symbolischen Links, die auf Verzeichnisse zeigen. Setzen Sie followlinks aufTrue, 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
Truezu 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.walkmit den Argumententop,topdown,onerror,followlinksaus.Geändert in Version 3.5: Diese Funktion ruft nun
os.scandir()anstelle vonos.listdir()auf, was sie durch Reduzierung der Anzahl der Aufrufe vonos.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 unddir_fdunterstü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()Falseist.Hinweis
Da
fwalk()Dateideskriptoren liefert, sind diese nur bis zur nächsten Iteration gültig. Sie sollten sie daher duplizieren (z. B. mitdup()), 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.fwalkmit den Argumententop,topdown,onerror,follow_symlinks,dir_fdaus.Verfügbarkeit: Unix.
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 mitmemfd: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()undwrite()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_NONBLOCKundEFD_SEMAPHOREkonstruiert werden.Wenn
EFD_SEMAPHOREangegeben ist und der Event-Zähler nicht Null ist, gibteventfd_read()1 zurück und dekrementiert den Zähler um eins.Wenn
EFD_SEMAPHOREnicht angegeben ist und der Event-Zähler nicht Null ist, gibteventfd_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_NONBLOCKnicht angegeben ist, blockierteventfd_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 eineventfd()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 eineventfd()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_NONBLOCKStatusflag für den neueneventfd()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ütztDie
read()-Methode des Datei-Deskriptors kann mit einer Puffergröße von 8 aufgerufen werden. Wenn der Timer bereits ein- oder mehrmals abgelaufen ist, gibtread()die Anzahl der Abläufe in der Byte-Reihenfolge des Hosts zurück, die mitint.from_bytes(x, byteorder=sys.byteorder)in einenintkonvertiert werden können.select()undpoll()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 definierttime.CLOCK_BOOTTIME(Seit Linux 3.15 für timerfd_create)
Wenn clockid
time.CLOCK_REALTIMEist, 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, sieheTFD_TIMER_CANCEL_ON_SET.Wenn clockid
time.CLOCK_MONOTONICist, 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_BOOTTIMEist, ist dies dasselbe wietime.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_NONBLOCKnicht als Flag gesetzt ist, blockiertread(), bis der Timer abläuft. Wenn es als Flag gesetzt ist, blockiertread()nicht, aber wenn seit dem letzten Aufruf von read kein Ablauf stattgefunden hat, löstread()eineOSErroraus, wobeierrnoauferrno.EAGAINgesetzt ist.TFD_CLOEXECwird 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 eineOSError-Ausnahme ausgelöst, wobeierrnoauferrno.EINVALgesetzt 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_ABSTIMEgesetzt ist, feuert der Timer, wenn die Uhr des Timers (gesetzt durch clockid intimerfd_create()) initial Sekunden erreicht.Das Intervall des Timers wird durch den
floatinterval 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 eineOSErrormiterrnoauferrno.EINVALausgelöst.Wenn das Flag
TFD_TIMER_CANCEL_ON_SETzusammen mitTFD_TIMER_ABSTIMEgesetzt ist und die Uhr für diesen Timertime.CLOCK_REALTIMEist, 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
settimeofdayclock_settimeSetzen 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.Siehe auch
Manpages timerfd_create(2), timerfd_settime(2), settimeofday(2), clock_settime(2) und date(1).
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 wietimerfd_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_expirationbezeichnet die relative Zeit bis zum nächsten Ablauf des Timers, unabhängig davon, ob das FlagTFD_TIMER_ABSTIMEgesetzt ist.intervalbezeichnet das Intervall des Timers. Wenn Null, feuert der Timer nur einmal, nachdemnext_expirationSekunden vergangen sind.Siehe auch
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 StatusflagO_NONBLOCKfür den neuen Timer-Datei-Deskriptor setzt. WennTFD_NONBLOCKnicht als Flag gesetzt ist, blockiertread().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(). WennTFD_CLOEXECals 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()undtimerfd_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()undtimerfd_settime_ns()zusammen mitTFD_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.getxattrmit den Argumentenpath,attributeaus.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
Noneist, untersuchtlistxattr()das aktuelle Verzeichnis.Diese Funktion kann die Angabe eines Dateideskriptors und das Nicht-Folgen von Symlinks unterstützen.
Löst ein Auditing-Ereignis
os.listxattrmit dem Argumentpathaus.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.removexattrmit den Argumentenpath,attributeaus.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 kannXATTR_REPLACEoderXATTR_CREATEsein. WennXATTR_REPLACEangegeben ist und das Attribut nicht existiert, wirdENODATAausgelöst. WennXATTR_CREATEangegeben ist und das Attribut bereits existiert, wird das Attribut nicht erstellt undEEXISTSwird 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.setxattrmit den Argumentenpath,attribute,value,flagsaus.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
flagsinsetxattr(). Es gibt an, dass die Operation ein Attribut erstellen muss.
- os.XATTR_REPLACE¶
Dies ist ein möglicher Wert für das Argument
flagsinsetxattr(). 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 von3zurück. Beachten Sie, dass der Aufruf dieser Funktion den mitsignal.signal()registrierten Python-Signalhandler fürSIGABRTnicht 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.pathaufgelöst) und auch vonctypes.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_directorymit dem Argumentpathaus.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
PATHoder dem aktuellen Arbeitsverzeichnis, und Betriebssystemfunktionen wieAddDllDirectoryhatten 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()oderos.fsync()leeren, bevor Sie eineexec*-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 derexecl*()-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()undexecvpe()), verwenden die UmgebungsvariablePATH, um die Programmdatei zu finden. Wenn die Umgebung ersetzt wird (mit einer derexec*e-Varianten, die im nächsten Absatz besprochen werden), wird die neue Umgebung als Quelle für die VariablePATHverwendet. Die anderen Varianten,execl(),execle(),execv()undexecve(), verwenden diePATH-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()undexecvpe()(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 Funktionenexecl(),execlp(),execv()undexecvp()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 mitos.supports_fdprüfen, ob sie verfügbar ist oder nicht. Wenn sie nicht verfügbar ist, wird bei der Verwendung eineNotImplementedErrorausgelöst.Löst ein Audit-Ereignis
os.execmit den Argumentenpath,args,envaus.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 einemfork()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
0im Kind und die Prozess-ID des Kindes im Elternprozess zurück. Wenn ein Fehler auftritt, wird eineOSErrorausgelö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.forkohne Argumente aus.Warnung
Wenn Sie TLS-Sockets in einer Anwendung verwenden, die
fork()aufruft, beachten Sie die Warnung in der Dokumentation vonssl.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 eineRuntimeErrorausgelöst).Geändert in Version 3.12: Wenn Python feststellen kann, dass Ihr Prozess mehrere Threads hat, löst
os.fork()nun eineDeprecationWarningaus.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 (wiemallocundfree).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 Kind0ist, 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 Modulpty. Wenn ein Fehler auftritt, wird eineOSErrorausgelöst.Löst ein Audit-Ereignis
os.forkptyohne 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 eineRuntimeErrorausgelöst).Geändert in Version 3.12: Wenn Python feststellen kann, dass Ihr Prozess mehrere Threads hat, löst dies nun eine
DeprecationWarningaus. Siehe die längere Erklärung zuos.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
signaldefiniert.Windows: Die Signale
signal.CTRL_C_EVENTundsignal.CTRL_BREAK_EVENTsind 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.killmit den Argumentenpid,sigaus.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.killpgmit den Argumentenpgid,sigaus.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-timeAPI Level 31Hinzugefü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
EAGAINzurü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 Funktionopen(). Das zurückgegebene Dateiobjekt liest oder schreibt Textzeichenketten anstelle von Bytes.Die Methode
closegibtNonezurü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.SIGKILLsein, 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 Methodeclose(Exit-Status) in einen Exit-Code umzuwandeln, wenn es nichtNoneist. Unter Windows ist das Ergebnis der Methodeclosedirekt der Exit-Code (oderNone).Dies wird mit
subprocess.Popenimplementiert; 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 umsubprocess.Popen. Verwenden Siesubprocess.Popenodersubprocess.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
subprocesswird 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 vonposix_spawn()verwenden.Die positionsbezogenen Argumente path, args und env sind ähnlich wie bei
execve(). env darfNonesein, 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()undexec()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()undposix_spawn_file_actions_addclosefrom_np(), die zur Vorbereitung desposix_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
Trueist, werden die effektive UID und GID des Kindes auf die reale UID und GID des Elternprozesses zurückgesetzt. Wenn das ArgumentFalseist, 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-FlagPOSIX_SPAWN_RESETIDS.Wenn das Argument setsid
Trueist, wird fürposix_spawneine neue Sitzungs-ID erstellt. setsid erfordert das FlagPOSIX_SPAWN_SETSIDoderPOSIX_SPAWN_SETSID_NP. Andernfalls wirdNotImplementedErrorausgelö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_parammit den Scheduler-Parametern enthält. Ein Wert vonNoneanstelle der Scheduler-Richtlinie zeigt an, dass diese nicht bereitgestellt wird. Dieses Argument ist eine Kombination aus den C-Bibliotheks-FlagsPOSIX_SPAWN_SETSCHEDPARAMundPOSIX_SPAWN_SETSCHEDULER.Löst ein Audit-Ereignis
os.posix_spawnmit den Argumentenpath,argv,envaus.Hinzugefügt in Version 3.8.
Geändert in Version 3.13: Der Parameter env akzeptiert
None.os.POSIX_SPAWN_CLOSEFROMist auf Plattformen verfügbar, auf denenposix_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 UmgebungsvariablePATHangegeben sind (auf die gleiche Weise wie beiexecvp(3)).Löst ein Audit-Ereignis
os.posix_spawnmit den Argumentenpath,argv,envaus.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
subprocesslö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 explizitPyOS_BeforeFork(),PyOS_AfterFork_Parent()undPyOS_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
subprocessleistungsfä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_NOWAITist, gibt diese Funktion die Prozess-ID des neuen Prozesses zurück; wenn modeP_WAITist, 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 Funktionwaitpid()verwendet werden kann.Hinweis zu VxWorks: Diese Funktion gibt
-signalnicht 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 derspawnl*()-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()undspawnvpe()) verwenden die UmgebungsvariablePATH, um die Programmdatei file zu finden. Wenn die Umgebung ersetzt wird (unter Verwendung einer derspawn*e-Varianten, siehe nächster Absatz), wird die neue Umgebung als Quelle für die VariablePATHverwendet. Die anderen Varianten,spawnl(),spawnle(),spawnv()undspawnve(), verwenden die VariablePATHnicht, um die ausführbare Datei zu finden; path muss einen geeigneten absoluten oder relativen Pfad enthalten.Für
spawnle(),spawnlpe(),spawnve()undspawnvpe()(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 Funktionenspawnl(),spawnlp(),spawnv()undspawnvp()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ückgabewert127.Als Beispiel sind die folgenden Aufrufe von
spawnlp()undspawnvpe()äquivalentimport 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.spawnmit den Argumentenmode,path,args,envaus.Verfügbarkeit: Unix, Windows, nicht WASI, nicht Android, nicht iOS.
spawnlp(),spawnlpe(),spawnvp()undspawnvpe()sind unter Windows nicht verfügbar.spawnle()undspawnve()sind unter Windows nicht Thread-sicher; wir empfehlen stattdessen die Verwendung dessubprocess-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
subprocesswird 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 Funktionenspawn*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 Funktionenspawn*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_DETACHist ähnlich wieP_NOWAIT, aber der neue Prozess ist von der Konsole des aufrufenden Prozesses getrennt. WennP_OVERLAYverwendet wird, wird der aktuelle Prozess ersetzt; die Funktionspawn*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 Siepathliboder die Funktionos.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, wirdNotImplementedErrorausgelöst.Löst ein Auditing-Ereignis
os.startfilemit den Argumentenpath,operationaus.Löst ein Auditing-Ereignis
os.startfile/2mit den Argumentenpath,operation,arguments,cwd,show_cmdaus.Verfügbarkeit: Windows.
Geändert in Version 3.10: Die Argumente arguments, cwd und show_cmd sowie das Audit-Ereignis
os.startfile/2wurden 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 ansys.stdinusw. 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
COMSPECangegeben: 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
subprocessbietet 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 vonsubprocessfü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.systemmit dem Argumentcommandaus.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- Benutzerzeitsystem- Systemzeitchildren_user- Benutzerzeit aller Kindprozessechildren_system- Systemzeit aller Kindprozesseelapsed- 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_systemundelapsedin 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
userundsystembekannt; 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
ChildProcessErrorausgelö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_ALLoder (unter Linux)P_PIDFDsein. Die Interpretation von id hängt davon ab; siehe deren individuelle Beschreibungen.options ist eine OR-Kombination von Flags. Mindestens eines von
WEXITED,WSTOPPEDoderWCONTINUEDist erforderlich;WNOHANGundWNOWAITsind zusätzliche optionale Flags.Der Rückgabewert ist ein Objekt, das die Daten in der Struktur
siginfo_tmit den folgenden Attributen darstelltsi_pid(Prozess-ID)si_uid(reale Benutzer-ID des Kindes)si_signo(immerSIGCHLD)si_status(der Exit-Status oder die Signalnummer, abhängig vonsi_code)si_code(sieheCLD_EXITEDfür mögliche Werte)
Wenn
WNOHANGangegeben ist und keine passenden Kinder im angeforderten Zustand vorhanden sind, wirdNonezurückgegeben. Andernfalls, wenn keine passenden Kinder zum Warten zur Verfügung stehen, wirdChildProcessErrorausgelö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 Betrieb0sein sollte.Wenn pid größer als
0ist, fordertwaitpid()Statusinformationen für diesen spezifischen Prozess an. Wenn pid0ist, bezieht sich die Anfrage auf den Status eines beliebigen Kindes in der Prozessgruppe des aktuellen Prozesses. Wenn pid-1ist, bezieht sich die Anfrage auf ein beliebiges Kind des aktuellen Prozesses. Wenn pid kleiner als-1ist, 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
WNOHANGenthä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, wirdChildProcessErrorausgelöst. Andere Optionen, die verwendet werden können, sindWUNTRACEDundWCONTINUED.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
0hat 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 mitP_NOWAITaufgerufenen Funktionenspawn*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 unterresource.getrusage(). Das Argument options ist dasselbe wie beiwaitpid()undwait4().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 unterresource.getrusage(). Die Argumente fürwait4()sind dieselben wie beiwaitpid().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 idP_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 mitpidfd_open()erstellt wurde).
Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.
Hinweis
P_PIDFDist 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()undwaitid()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()undwait4()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()undwaitid()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ätererwait*()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_codeim Ergebnis, das vonwaitid()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_KILLEDundCLD_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 (gibWEXITSTATUS(status)zurück): Ergebnis größer oder gleich 0.Wenn der Prozess durch ein Signal beendet wurde (wenn
WIFSIGNALED(status)wahr ist), gib-signumzurü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
ValueErroraus.
Unter Windows gib status um 8 Bits nach rechts verschoben zurück.
Unter Unix, wenn der Prozess verfolgt wird oder wenn
waitpid()mit der OptionWUNTRACEDaufgerufen wurde, muss der Aufrufer zuerst prüfen, obWIFSTOPPED(status)wahr ist. Diese Funktion darf nicht aufgerufen werden, wennWIFSTOPPED(status)wahr ist.Siehe auch
WIFEXITED(),WEXITSTATUS(),WIFSIGNALED(),WTERMSIG(),WIFSTOPPED(),WSTOPSIG()Funktionen.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
Truezurück, wenn ein Core-Dump für den Prozess generiert wurde, andernfallsFalse.Diese Funktion sollte nur verwendet werden, wenn
WIFSIGNALED()wahr ist.Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.
- os.WIFCONTINUED(status)¶
Gibt
Truezurück, wenn ein gestopptes Kind durch die Zustellung vonSIGCONTwieder aufgenommen wurde (wenn der Prozess aus einem Job-Control-Stopp fortgesetzt wurde), andernfallsFalse.Siehe die Option
WCONTINUED.Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.
- os.WIFSTOPPED(status)¶
Gibt
Truezurück, wenn der Prozess durch die Zustellung eines Signals gestoppt wurde, andernfallsFalse.WIFSTOPPED()gibt nur dannTruezurück, wenn der Aufruf vonwaitpid()mit der OptionWUNTRACEDerfolgte oder wenn der Prozess verfolgt wird (siehe ptrace(2)).Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.
- os.WIFSIGNALED(status)¶
Gibt
Truezurück, wenn der Prozess durch ein Signal beendet wurde, andernfallsFalse.Verfügbarkeit: Unix, nicht WASI, nicht Android, nicht iOS.
- os.WIFEXITED(status)¶
Gibt
Truezurück, wenn der Prozess normal beendet wurde, d. h. durch Aufruf vonexit()oder_exit(), oder durch Rückkehr ausmain(); andernfallsFalse.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()undsched_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_paramfü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
Nonezurückgegeben.Wenn name eine Zeichenkette ist und nicht bekannt ist, wird
ValueErrorausgelöst. Wenn ein bestimmter Wert für name vom Host-System nicht unterstützt wird, auch wenn er inconfstr_namesenthalten ist, wird eineOSErrormiterrno.EINVALals Fehler-Nummer ausgelöst.Verfügbarkeit: Unix.
- 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.Verfügbarkeit: Unix.
- os.cpu_count()¶
Gibt die Anzahl der logischen CPUs im **System** zurück. Gibt
Nonezurü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_countangegeben ist oderPYTHON_CPU_COUNTgesetzt ist, gibtcpu_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
OSErroraus, wenn die Auslastung nicht ermittelt werden konnte.Verfügbarkeit: Unix.
- os.process_cpu_count()¶
Ruft die Anzahl der logischen CPUs ab, die für den aufrufenden Thread des **aktuellen Prozesses** nutzbar sind. Gibt
Nonezurück, wenn nicht ermittelbar. Kann kleiner alscpu_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_countangegeben ist oderPYTHON_CPU_COUNTgesetzt ist, gibtprocess_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
-1zurückgegeben. Die Kommentare bezüglich des name-Parameters fürconfstr()gelten auch hier; das Wörterbuch, das Informationen über die bekannten Namen liefert, istsysconf_names.Verfügbarkeit: Unix.
- 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.Verfügbarkeit: Unix.
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 überos.pathverfü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 überos.pathverfü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 Sieos.path.split()undos.path.join()– aber es ist gelegentlich nützlich. Auch überos.pathverfü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 denensepein Backslash ist, auf'/'gesetzt. Auch überos.pathverfügbar.
- os.extsep¶
Das Zeichen, das den Basisdateinamen von der Erweiterung trennt; zum Beispiel der
'.'inos.py. Auch überos.pathverfü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 überos.pathverfügbar.
- os.defpath¶
Der Standard-Suchpfad, der von
exec*p*undspawn*p*verwendet wird, wenn die Umgebung keinen'PATH'-Schlüssel hat. Auch überos.pathverfü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 überos.pathverfü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()undgetdlopenflags(). 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/randomund/dev/urandomaus.Das Argument flags ist eine Bitmaske, die null oder mehr der folgenden Werte enthalten kann, die miteinander verknüpft sind:
os.GRND_RANDOMundGRND_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 Funktiongetrandom()verwendet werden, um Zufallsbytes im nicht-blockierenden Modus zu erhalten (mit dem FlagGRND_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/urandomgelesen. Wenn das Gerät/dev/urandomnicht verfügbar oder nicht lesbar ist, wird die AusnahmeNotImplementedErrorausgelöst.Unter Windows wird
BCryptGenRandom()verwendet.Siehe auch
Das Modul
secretsbietet übergeordnete Funktionen. Für eine einfach zu bedienende Schnittstelle zum Zufallszahlengenerator Ihrer Plattform sieherandom.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-Funktiongetentropy()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/urandomzurü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 vonCryptGenRandom()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_NONBLOCKgesetzt ist, blockiertgetrandom()in diesen Fällen nicht, sondern löst sofortBlockingIOErroraus.Hinzugefügt in Version 3.6.
- os.GRND_RANDOM¶
Wenn dieses Bit gesetzt ist, werden Zufallsbytes aus dem Pool von
/dev/randomanstelle des Pools von/dev/urandomgezogen.Hinzugefügt in Version 3.6.