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.

Geändert in Version 3.4: Die Funktion unterstützt S_IFDOOR, S_IFPORT und S_IFWHT.

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.

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 auch S_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_ISGID geteilt: Datei-/Record-Sperrung wird auf Dateien erzwungen, bei denen das Gruppen-Ausführungsbit (S_IXGRP) nicht gesetzt ist.

stat.S_IREAD

Unix V7 Synonym für S_IRUSR.

stat.S_IWRITE

Unix V7 Synonym für S_IWUSR.

stat.S_IEXEC

Unix V7 Synonym für S_IXUSR.

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.

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

Hinzugefügt in Version 3.13.

stat.SF_SYNTHETIC

Alle vom Superuser schreibgeschützten synthetischen Flags

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.

Die Datei kann nicht umbenannt oder gelöscht werden.

stat.SF_SNAPSHOT

Die Datei ist eine Snapshot-Datei.

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.

stat.IO_REPARSE_TAG_MOUNT_POINT

Hinzugefügt in Version 3.8.