stat — Tolkning av stat()-resultat

Källkod: Lib/stat.py


Modulen stat definierar konstanter och funktioner för tolkning av resultaten från os.stat(), os.fstat() och os.lstat() (om de finns). För fullständig information om anropen stat(), fstat() och lstat(), se dokumentationen för ditt system.

Ändrad i version 3.4: Stat-modulen stöds av en C-implementering.

Modulen stat definierar följande funktioner för att testa för specifika filtyper:

stat.S_ISDIR(mode)

Returnerar icke-noll om läget är från en katalog.

stat.S_ISCHR(mode)

Returnerar icke-noll om läget kommer från en fil med specialenheter för tecken.

stat.S_ISBLK(mode)

Returnerar icke-noll om läget är från en blockspecifik enhetsfil.

stat.S_ISREG(mode)

Returnerar icke-noll om läget är från en vanlig fil.

stat.S_ISFIFO(mode)

Returnerar icke-noll om läget är från en FIFO (named pipe).

stat.S_ISLNK(mode)

Returnerar icke-noll om läget är från en symbolisk länk.

stat.S_ISSOCK(mode)

Returnerar icke-noll om läget är från ett uttag.

stat.S_ISDOOR(mode)

Returnerar icke-noll om läget är från en dörr.

Tillagd i version 3.4.

stat.S_ISPORT(mode)

Returnerar icke-noll om läget är från en händelseport.

Tillagd i version 3.4.

stat.S_ISWHT(mode)

Returnerar icke-noll om läget är från en whiteout.

Tillagd i version 3.4.

Två ytterligare funktioner har definierats för mer allmän hantering av filens läge:

stat.S_IMODE(mode)

Returnerar den del av filens läge som kan ställas in av os.chmod()—det vill säga filens behörighetsbitar, plus sticky-biten, set-group-id och set-user-id-bitarna (på system som stöder dem).

stat.S_IFMT(mode)

Returnerar den del av filens läge som beskriver filtypen (används av funktionerna S_IS*() ovan).

Normalt använder du os.path.is*()-funktionerna för att testa typen av en fil; funktionerna här är användbara när du gör flera tester av samma fil och vill undvika kostnaderna för systemanropet stat() för varje test. Dessa funktioner är också användbara när du söker efter information om en fil som inte hanteras av os.path, t.ex. testerna för block- och teckenenheter.

Exempel:

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)

En ytterligare funktion finns för att konvertera en fils läge till en läsbar sträng:

stat.filemode(mode)

Konverterar en fils läge till en sträng av formen ’-rwxrwxrwx’.

Tillagd i version 3.3.

Ändrad i version 3.4: Funktionen stöder S_IFDOOR, S_IFPORT och S_IFWHT.

Alla variabler nedan är helt enkelt symboliska index i den 10-tupel som returneras av os.stat(), os.fstat() eller os.lstat().

stat.ST_MODE

Inode-skyddande läge.

stat.ST_INO

Inode-nummer.

stat.ST_DEV

Enheten inode finns på.

Antal länkar till inoden.

stat.ST_UID

Användar-ID för ägaren.

stat.ST_GID

Grupp-ID för ägaren.

stat.ST_SIZE

Storlek i byte på en vanlig fil; datamängd som väntar på vissa specialfiler.

stat.ST_ATIME

Tidpunkt för senaste åtkomst.

stat.ST_MTIME

Tidpunkt för senaste ändring.

stat.ST_CTIME

Den ”ctime” som rapporteras av operativsystemet. På vissa system (t.ex. Unix) är det tidpunkten för den senaste ändringen av metadata och på andra (t.ex. Windows) är det skapelsetiden (se plattformsdokumentationen för mer information).

Tolkningen av ”filstorlek” ändras beroende på filtyp. För vanliga filer är detta filens storlek i byte. För FIFO:er och socklar under de flesta varianter av Unix (inklusive Linux i synnerhet) är ”storleken” antalet byte som väntar på att läsas vid tidpunkten för anropet till os.stat(), os.fstat() eller os.lstat(); detta kan ibland vara användbart, särskilt för polling av en av dessa specialfiler efter en icke-blockerande öppning. Betydelsen av size-fältet för andra tecken- och blockenheter varierar mer, beroende på implementeringen av det underliggande systemanropet.

Variablerna nedan definierar de flaggor som används i fältet ST_MODE.

Användningen av funktionerna ovan är mer portabel än användningen av den första uppsättningen flaggor:

stat.S_IFSOCK

Uttag.

stat.S_IFLNK

Symbolisk länk.

stat.S_IFREG

Vanlig fil.

stat.S_IFBLK

Blockenhet.

stat.S_IFDIR

Directory.

stat.S_IFCHR

Teckenenhet.

stat.S_IFIFO

FIFO.

stat.S_IFDOOR

Dörr.

Tillagd i version 3.4.

stat.S_IFPORT

Händelseport.

Tillagd i version 3.4.

stat.S_IFWHT

Whiteout.

Tillagd i version 3.4.

Anteckning

S_IFDOOR, S_IFPORT eller S_IFWHT definieras som 0 när plattformen inte har stöd för filtyperna.

Följande flaggor kan också användas i mode-argumentet i os.chmod():

stat.S_ISUID

Ställ in UID-biten.

stat.S_ISGID

Bit för uppsättning av grupp-ID. Denna bit har flera speciella användningsområden. För en katalog anger den att BSD-semantik ska användas för den katalogen: filer som skapas där ärver sitt grupp-ID från katalogen, inte från det effektiva grupp-ID:t för den skapande processen, och kataloger som skapas där får också S_ISGID-biten satt. För en fil som inte har gruppexekveringsbiten (S_IXGRP) inställd, indikerar set-group-ID-biten obligatorisk fil-/registerlåsning (se även S_ENFMT).

stat.S_ISVTX

Klibbig bit. När den här biten är aktiverad för en katalog innebär det att en fil i den katalogen endast kan döpas om eller tas bort av filens ägare, av katalogens ägare eller av en privilegierad process.

stat.S_IRWXU

Mask för filägarens behörigheter.

stat.S_IRUSR

Ägaren har läsbehörighet.

stat.S_IWUSR

Ägaren har skrivbehörighet.

stat.S_IXUSR

Ägaren har exekveringsbehörighet.

stat.S_IRWXG

Mask för gruppbehörigheter.

stat.S_IRGRP

Gruppen har läsbehörighet.

stat.S_IWGRP

Gruppen har skrivbehörighet.

stat.S_IXGRP

Gruppen har exekveringsbehörighet.

stat.S_IRWXO

Mask för behörigheter för övriga (inte i grupp).

stat.S_IROTH

Övriga har läsbehörighet.

stat.S_IWOTH

Övriga har skrivbehörighet.

stat.S_IXOTH

Övriga har exekveringsbehörighet.

stat.S_ENFMT

System V upprätthåller låsning av filer. Denna flagga delas med S_ISGID: fil/postlåsning verkställs på filer som inte har gruppkörningsbiten (S_IXGRP) inställd.

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.

Följande flaggor kan användas i argumentet flags i os.chflags():

stat.UF_SETTABLE

Alla flaggor kan ställas in av användaren.

Tillagd i version 3.13.

stat.UF_NODUMP

Dumpa inte filen.

stat.UF_IMMUTABLE

Filen får inte ändras.

stat.UF_APPEND

Filen får endast läggas till som bilaga.

stat.UF_OPAQUE

Katalogen är ogenomskinlig när den betraktas genom en unionstack.

Filen får inte bytas namn på eller raderas.

stat.UF_COMPRESSED

Filen lagras komprimerad (macOS 10.6+).

stat.UF_TRACKED

Används för hantering av dokument-ID (macOS)

Tillagd i version 3.13.

stat.UF_DATAVAULT

Filen behöver en rättighet för att kunna läsas eller skrivas (macOS 10.13+)

Tillagd i version 3.13.

stat.UF_HIDDEN

Filen ska inte visas i ett GUI (macOS 10.5+).

stat.SF_SETTABLE

Alla flaggor som kan ändras av superanvändaren

Tillagd i version 3.13.

stat.SF_SUPPORTED

Alla flaggor som stöds av superanvändare

Tillagd i version 3.13.

stat.SF_SYNTHETIC

Alla syntetiska flaggor med skrivskydd för superanvändare

Tillagd i version 3.13.

stat.SF_ARCHIVED

Filen kan komma att arkiveras.

stat.SF_IMMUTABLE

Filen får inte ändras.

stat.SF_APPEND

Filen får endast läggas till som bilaga.

stat.SF_RESTRICTED

Filen behöver en rättighet för att kunna skrivas till (macOS 10.13+)

Tillagd i version 3.13.

Filen får inte bytas namn på eller raderas.

stat.SF_SNAPSHOT

Filen är en snapshot-fil.

Filen är en firmlink (macOS 10.15+)

Tillagd i version 3.13.

stat.SF_DATALESS

Filen är ett datalöst objekt (macOS 10.15+)

Tillagd i version 3.13.

Se *BSD- eller macOS-systemens manpage chflags(2) för mer information.

I Windows är följande filattributkonstanter tillgängliga för användning vid testning av bitar i medlemmen st_file_attributes som returneras av os.stat(). Se Windows API-dokumentation för mer information om betydelsen av dessa konstanter.

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

Tillagd i version 3.5.

I Windows finns följande konstanter tillgängliga för jämförelse med medlemmen st_reparse_tag som returneras av os.lstat(). Dessa är välkända konstanter, men listan är inte uttömmande.

stat.IO_REPARSE_TAG_MOUNT_POINT

Tillagd i version 3.8.