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.
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å.
- stat.ST_NLINK¶
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 ävenS_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.
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.
- stat.UF_NOUNLINK¶
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
Tillgänglighet: macOS
Tillagd i version 3.13.
- stat.SF_SYNTHETIC¶
Alla syntetiska flaggor med skrivskydd för superanvändare
Tillgänglighet: macOS
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.
- stat.SF_NOUNLINK¶
Filen får inte bytas namn på eller raderas.
- stat.SF_SNAPSHOT¶
Filen är en snapshot-fil.
- stat.SF_FIRMLINK¶
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.