stat — Interpretation der stat()-Ergebnisse¶
Quellcode: Lib/stat.py
Das Modul stat definiert Konstanten und Funktionen zur Interpretation der Ergebnisse von os.stat(), os.fstat() und os.lstat() (sofern vorhanden). Vollständige Details zu den Aufrufen stat(), fstat() und lstat() finden Sie in der Dokumentation Ihres Systems.
Geändert in Version 3.4: Das Modul stat wird von einer C-Implementierung unterstützt.
Das Modul stat definiert die folgenden Funktionen zum Testen spezifischer Dateitypen
- stat.S_ISDIR(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einem Verzeichnis stammt.
- stat.S_ISCHR(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einer Zeichen-Spezialgerät-Datei stammt.
- stat.S_ISBLK(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einer Block-Spezialgerät-Datei stammt.
- stat.S_ISREG(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einer regulären Datei stammt.
- stat.S_ISFIFO(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einer FIFO (benannte Pipe) stammt.
- stat.S_ISLNK(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einem symbolischen Link stammt.
- stat.S_ISSOCK(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einem Socket stammt.
- stat.S_ISDOOR(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einer Tür stammt.
Hinzugefügt in Version 3.4.
- stat.S_ISPORT(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einem Event-Port stammt.
Hinzugefügt in Version 3.4.
- stat.S_ISWHT(mode)¶
Gibt einen Wert ungleich Null zurück, wenn der Modus von einem Whiteout stammt.
Hinzugefügt in Version 3.4.
Zwei zusätzliche Funktionen sind für eine allgemeinere Manipulation des Datei-Modus definiert
- stat.S_IMODE(mode)¶
Gibt den Teil des Datei-Modus zurück, der von
os.chmod()gesetzt werden kann – d. h. die Berechtigungsbits der Datei sowie das Sticky-Bit, Set-Group-ID und Set-User-ID-Bits (auf Systemen, die sie unterstützen).
- stat.S_IFMT(mode)¶
Gibt den Teil des Datei-Modus zurück, der den Dateityp beschreibt (verwendet von den obigen
S_IS*()-Funktionen).
Normalerweise würden Sie die Funktionen os.path.is*() verwenden, um den Typ einer Datei zu testen; die hier aufgeführten Funktionen sind nützlich, wenn Sie mehrere Tests derselben Datei durchführen und den Overhead des stat()-Systemaufrufs für jeden Test vermeiden möchten. Sie sind auch nützlich, wenn Sie Informationen über eine Datei abfragen, die nicht von os.path behandelt werden, wie z. B. die Tests für Block- und Zeichengeräte.
Beispiel
import os, sys
from stat import *
def walktree(top, callback):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.lstat(pathname).st_mode
if S_ISDIR(mode):
# It's a directory, recurse into it
walktree(pathname, callback)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname)
else:
# Unknown file type, print a message
print('Skipping %s' % pathname)
def visitfile(file):
print('visiting', file)
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
Eine zusätzliche Hilfsfunktion wird bereitgestellt, um den Modus einer Datei in eine menschenlesbare Zeichenkette umzuwandeln
- stat.filemode(mode)¶
Konvertiert den Modus einer Datei in eine Zeichenkette der Form „-rwxrwxrwx“.
Hinzugefügt in Version 3.3.
Alle unten aufgeführten Variablen sind einfach symbolische Indizes in das 10-Tupel, das von os.stat(), os.fstat() oder os.lstat() zurückgegeben wird.
- stat.ST_MODE¶
Schutzmodus des Inodes.
- stat.ST_INO¶
Inode-Nummer.
- stat.ST_DEV¶
Gerät, auf dem sich der Inode befindet.
- stat.ST_NLINK¶
Anzahl der Verknüpfungen zum Inode.
- stat.ST_UID¶
Benutzer-ID des Besitzers.
- stat.ST_GID¶
Gruppen-ID des Besitzers.
- stat.ST_SIZE¶
Größe in Bytes einer normalen Datei; Menge der auf einigen Spezialdateien wartenden Daten.
- stat.ST_ATIME¶
Zeit des letzten Zugriffs.
- stat.ST_MTIME¶
Zeit der letzten Änderung.
- stat.ST_CTIME¶
Die vom Betriebssystem gemeldete „ctime“. Auf einigen Systemen (wie Unix) ist dies die Zeit der letzten Metadatenänderung, auf anderen (wie Windows) ist es die Erstellungszeit (siehe Plattformdokumentation für Details).
Die Interpretation der „Dateigröße“ hängt vom Dateityp ab. Bei normalen Dateien ist dies die Größe der Datei in Bytes. Bei FIFOs und Sockets unter den meisten Unix-Varianten (insbesondere unter Linux) ist die „Größe“ die Anzahl der Bytes, die zum Zeitpunkt des Aufrufs von os.stat(), os.fstat() oder os.lstat() zum Lesen bereitstehen; dies kann manchmal nützlich sein, insbesondere beim Abfragen einer dieser Spezialdateien nach einem nicht-blockierenden Öffnen. Die Bedeutung des Größenfeldes für andere Zeichen- und Blockgeräte variiert stärker und hängt von der Implementierung des zugrunde liegenden Systemaufrufs ab.
Die folgenden Variablen definieren die Flags, die im Feld ST_MODE verwendet werden.
Die Verwendung der obigen Funktionen ist portabler als die Verwendung der ersten Gruppe von Flags
- stat.S_IFSOCK¶
Socket.
- stat.S_IFLNK¶
Symbolischer Link.
- stat.S_IFREG¶
Reguläre Datei.
- stat.S_IFBLK¶
Block-Gerät.
- stat.S_IFDIR¶
Verzeichnis.
- stat.S_IFCHR¶
Zeichen-Gerät.
- stat.S_IFIFO¶
FIFO.
- stat.S_IFDOOR¶
Tür.
Hinzugefügt in Version 3.4.
- stat.S_IFPORT¶
Event-Port.
Hinzugefügt in Version 3.4.
- stat.S_IFWHT¶
Whiteout.
Hinzugefügt in Version 3.4.
Hinweis
S_IFDOOR, S_IFPORT oder S_IFWHT werden als 0 definiert, wenn die Plattform keine Unterstützung für die Dateitypen hat.
Die folgenden Flags können auch im Argument mode von os.chmod() verwendet werden
- stat.S_ISUID¶
Set-UID-Bit.
- stat.S_ISGID¶
Set-Group-ID-Bit. Dieses Bit hat mehrere spezielle Verwendungen. Für ein Verzeichnis gibt es an, dass BSD-Semantik für dieses Verzeichnis verwendet werden soll: Dateien, die dort erstellt werden, erben ihre Gruppen-ID vom Verzeichnis, nicht von der effektiven Gruppen-ID des erstellenden Prozesses, und Verzeichnisse, die dort erstellt werden, erhalten ebenfalls das Bit
S_ISGID. Für eine Datei, bei der das Gruppen-Ausführungsbit (S_IXGRP) nicht gesetzt ist, zeigt das Set-Group-ID-Bit eine obligatorische Datei-/Record-Sperrung an (siehe auchS_ENFMT).
- stat.S_ISVTX¶
Sticky-Bit. Wenn dieses Bit auf einem Verzeichnis gesetzt ist, bedeutet dies, dass eine Datei in diesem Verzeichnis nur vom Besitzer der Datei, vom Besitzer des Verzeichnisses oder von einem privilegierten Prozess umbenannt oder gelöscht werden kann.
- stat.S_IRWXU¶
Maske für die Berechtigungen des Dateibesitzers.
- stat.S_IRUSR¶
Besitzer hat Leseberechtigung.
- stat.S_IWUSR¶
Besitzer hat Schreibberechtigung.
- stat.S_IXUSR¶
Besitzer hat Ausführungsberechtigung.
- stat.S_IRWXG¶
Maske für Gruppenberechtigungen.
- stat.S_IRGRP¶
Gruppe hat Leseberechtigung.
- stat.S_IWGRP¶
Gruppe hat Schreibberechtigung.
- stat.S_IXGRP¶
Gruppe hat Ausführungsberechtigung.
- stat.S_IRWXO¶
Maske für Berechtigungen für andere (nicht in der Gruppe).
- stat.S_IROTH¶
Andere haben Leseberechtigung.
- stat.S_IWOTH¶
Andere haben Schreibberechtigung.
- stat.S_IXOTH¶
Andere haben Ausführungsberechtigung.
- stat.S_ENFMT¶
System V Dateisperrungserzwingung. Dieses Flag wird mit
S_ISGIDgeteilt: Datei-/Record-Sperrung wird auf Dateien erzwungen, bei denen das Gruppen-Ausführungsbit (S_IXGRP) nicht gesetzt ist.
Die folgenden Flags können im Argument flags von os.chflags() verwendet werden
- stat.UF_SETTABLE¶
Alle benutzerseitig einstellbaren Flags.
Hinzugefügt in Version 3.13.
- stat.UF_NODUMP¶
Datei nicht sichern.
- stat.UF_IMMUTABLE¶
Die Datei kann nicht geändert werden.
- stat.UF_APPEND¶
Zur Datei kann nur angehängt werden.
- stat.UF_OPAQUE¶
Das Verzeichnis ist durch einen Union-Stack hindurch opak.
- stat.UF_NOUNLINK¶
Die Datei kann nicht umbenannt oder gelöscht werden.
- stat.UF_COMPRESSED¶
Die Datei wird komprimiert gespeichert (macOS 10.6+).
- stat.UF_TRACKED¶
Verwendet für die Handhabung von Dokumenten-IDs (macOS)
Hinzugefügt in Version 3.13.
- stat.UF_DATAVAULT¶
Die Datei benötigt eine Berechtigung zum Lesen oder Schreiben (macOS 10.13+)
Hinzugefügt in Version 3.13.
- stat.UF_HIDDEN¶
Die Datei sollte in einer GUI nicht angezeigt werden (macOS 10.5+).
- stat.SF_SETTABLE¶
Alle vom Superuser einstellbaren Flags
Hinzugefügt in Version 3.13.
- stat.SF_SUPPORTED¶
Alle vom Superuser unterstützten Flags
Verfügbarkeit: macOS
Hinzugefügt in Version 3.13.
- stat.SF_SYNTHETIC¶
Alle vom Superuser schreibgeschützten synthetischen Flags
Verfügbarkeit: macOS
Hinzugefügt in Version 3.13.
- stat.SF_ARCHIVED¶
Die Datei kann archiviert werden.
- stat.SF_IMMUTABLE¶
Die Datei kann nicht geändert werden.
- stat.SF_APPEND¶
Zur Datei kann nur angehängt werden.
- stat.SF_RESTRICTED¶
Die Datei benötigt eine Berechtigung zum Schreiben (macOS 10.13+)
Hinzugefügt in Version 3.13.
- stat.SF_NOUNLINK¶
Die Datei kann nicht umbenannt oder gelöscht werden.
- stat.SF_SNAPSHOT¶
Die Datei ist eine Snapshot-Datei.
- stat.SF_FIRMLINK¶
Die Datei ist ein Firmlink (macOS 10.15+)
Hinzugefügt in Version 3.13.
- stat.SF_DATALESS¶
Die Datei ist ein datenloser Objekttyp (macOS 10.15+)
Hinzugefügt in Version 3.13.
Weitere Informationen finden Sie im man-Page chflags(2) für *BSD- oder macOS-Systeme.
Unter Windows sind die folgenden Dateiattribut-Konstanten für die Prüfung von Bits im Mitglied st_file_attributes verfügbar, das von os.stat() zurückgegeben wird. Details zur Bedeutung dieser Konstanten finden Sie in der Windows API-Dokumentation.
- stat.FILE_ATTRIBUTE_ARCHIVE¶
- stat.FILE_ATTRIBUTE_COMPRESSED¶
- stat.FILE_ATTRIBUTE_DEVICE¶
- stat.FILE_ATTRIBUTE_DIRECTORY¶
- stat.FILE_ATTRIBUTE_ENCRYPTED¶
- stat.FILE_ATTRIBUTE_HIDDEN¶
- stat.FILE_ATTRIBUTE_INTEGRITY_STREAM¶
- stat.FILE_ATTRIBUTE_NORMAL¶
- stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED¶
- stat.FILE_ATTRIBUTE_NO_SCRUB_DATA¶
- stat.FILE_ATTRIBUTE_OFFLINE¶
- stat.FILE_ATTRIBUTE_READONLY¶
- stat.FILE_ATTRIBUTE_REPARSE_POINT¶
- stat.FILE_ATTRIBUTE_SPARSE_FILE¶
- stat.FILE_ATTRIBUTE_SYSTEM¶
- stat.FILE_ATTRIBUTE_TEMPORARY¶
- stat.FILE_ATTRIBUTE_VIRTUAL¶
Hinzugefügt in Version 3.5.
Unter Windows sind die folgenden Konstanten für den Vergleich mit dem von os.lstat() zurückgegebenen Member st_reparse_tag verfügbar. Dies sind bekannte Konstanten, aber keine erschöpfende Liste.