stat — Interpreting stat() results

Вихідний код: Lib/stat.py


The stat module defines constants and functions for interpreting the results of os.stat(), os.fstat() and os.lstat() (if they exist). For complete details about the stat(), fstat() and lstat() calls, consult the documentation for your system.

Змінено в версії 3.4: Модуль stat підтримується реалізацією C.

Модуль stat визначає такі функції для перевірки певних типів файлів:

stat.S_ISDIR(mode)

Повертає відмінне від нуля значення, якщо режим з каталогу.

stat.S_ISCHR(mode)

Повертає відмінне від нуля значення, якщо режим походить із файлу спеціального символьного пристрою.

stat.S_ISBLK(mode)

Повертає відмінне від нуля значення, якщо режим походить із спеціального блокового файлу пристрою.

stat.S_ISREG(mode)

Повертає відмінне від нуля значення, якщо режим із звичайного файлу.

stat.S_ISFIFO(mode)

Повертає відмінне від нуля значення, якщо режим походить із FIFO (іменований канал).

stat.S_ISLNK(mode)

Повертає відмінне від нуля значення, якщо режим походить із символічного посилання.

stat.S_ISSOCK(mode)

Повертає відмінне від нуля значення, якщо режим походить із сокета.

stat.S_ISDOOR(mode)

Повертає відмінне від нуля значення, якщо режим від дверей.

Нове в версії 3.4.

stat.S_ISPORT(mode)

Повертає відмінне від нуля значення, якщо режим походить із порту події.

Нове в версії 3.4.

stat.S_ISWHT(mode)

Повертає відмінне від нуля значення, якщо режим вимкнено.

Нове в версії 3.4.

Дві додаткові функції визначені для більш загального керування режимом файлу:

stat.S_IMODE(mode)

Повертає частину режиму файлу, яку можна встановити за допомогою os.chmod()—тобто біти дозволу файлу, а також біти sticky, set-group-id та set-user-id. (на системах, які їх підтримують).

stat.S_IFMT(mode)

Return the portion of the file’s mode that describes the file type (used by the S_IS*() functions above).

Normally, you would use the os.path.is*() functions for testing the type of a file; the functions here are useful when you are doing multiple tests of the same file and wish to avoid the overhead of the stat() system call for each test. These are also useful when checking for information about a file that isn’t handled by os.path, like the tests for block and character devices.

Приклад:

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)

Надається додаткова службова функція для перетворення режиму файлу в зрозумілий рядок:

stat.filemode(mode)

Перетворити режим файлу на рядок у формі „-rwxrwxrwx“.

Нове в версії 3.3.

Змінено в версії 3.4: Функція підтримує S_IFDOOR, S_IFPORT і S_IFWHT.

Усі наведені нижче змінні є просто символічними індексами в 10-кортежі, які повертає os.stat(), os.fstat() або os.lstat().

stat.ST_MODE

Режим захисту Inode.

stat.ST_INO

Номер Inode.

stat.ST_DEV

Inode пристрою знаходиться на.

Кількість посилань на inode.

stat.ST_UID

ID користувача власника.

stat.ST_GID

ID групи власника.

stat.ST_SIZE

Розмір звичайного файлу в байтах; кількість даних, які очікують на деякі спеціальні файли.

stat.ST_ATIME

Час останнього доступу.

stat.ST_MTIME

Час останньої модифікації.

stat.ST_CTIME

«ctime», як повідомляє операційна система. У деяких системах (як-от Unix) це час останньої зміни метаданих, а в інших (як-от Windows) це час створення (дивіться документацію платформи для отримання додаткової інформації).

Інтерпретація «розміру файлу» змінюється залежно від типу файлу. Для простих файлів це розмір файлу в байтах. Для FIFO та сокетів у більшості варіантів Unix (зокрема, у Linux), «розмір» — це кількість байтів, які очікують на читання під час виклику os.stat(), os .fstat() або os.lstat(); іноді це може бути корисним, особливо для опитування одного з цих спеціальних файлів після неблокуючого відкриття. Значення поля розміру для інших символьних і блочних пристроїв більше змінюється в залежності від реалізації основного системного виклику.

Наведені нижче змінні визначають прапорці, які використовуються в полі ST_MODE.

Використання наведених вище функцій більш переносне, ніж використання першого набору прапорів:

stat.S_IFSOCK

Розетка.

stat.S_IFLNK

Символічне посилання.

stat.S_IFREG

Звичайний файл.

stat.S_IFBLK

Блокувати пристрій.

stat.S_IFDIR

Довідник.

stat.S_IFCHR

Символьний пристрій.

stat.S_IFIFO

FIFO.

stat.S_IFDOOR

двері.

Нове в версії 3.4.

stat.S_IFPORT

Порт події.

Нове в версії 3.4.

stat.S_IFWHT

Відбілювання.

Нове в версії 3.4.

Примітка

S_IFDOOR, S_IFPORT або S_IFWHT визначаються як 0, якщо платформа не підтримує типи файлів.

Наступні позначки також можна використовувати в аргументі mode os.chmod():

stat.S_ISUID

Встановити біт UID.

stat.S_ISGID

Set-group-ID біт. Цей біт має декілька спеціальних застосувань. Для каталогу це означає, що семантика BSD має використовуватися для цього каталогу: файли, створені там, успадковують свій ідентифікатор групи від каталогу, а не від ефективного ідентифікатора групи процесу створення, і створені там каталоги також отримають Встановлено біт S_ISGID. Для файлу, який не має встановленого біта виконання групи (S_IXGRP), біт set-group-ID вказує на обов’язкове блокування файлу/запису (див. також S_ENFMT).

stat.S_ISVTX

Липкий шматочок. Коли цей біт встановлено для каталогу, це означає, що файл у цьому каталозі може бути перейменовано або видалено лише власником файлу, власником каталогу або привілейованим процесом.

stat.S_IRWXU

Маска для дозволів власника файлу.

stat.S_IRUSR

Власник має дозвіл на читання.

stat.S_IWUSR

Власник має дозвіл на запис.

stat.S_IXUSR

Власник має дозвіл на виконання.

stat.S_IRWXG

Маска для групових дозволів.

stat.S_IRGRP

Група має дозвіл на читання.

stat.S_IWGRP

Група має дозвіл на запис.

stat.S_IXGRP

Група має дозвіл на виконання.

stat.S_IRWXO

Маска для дозволів для інших (не в групі).

stat.S_IROTH

Інші мають дозвіл на читання.

stat.S_IWOTH

Інші мають дозвіл на запис.

stat.S_IXOTH

Інші мають дозвіл на виконання.

stat.S_ENFMT

Примусове блокування файлів System V. Цей прапорець спільний з S_ISGID: блокування файлів/записів застосовується для файлів, які не мають встановленого біта виконання групи (S_IXGRP).

stat.S_IREAD

Синонім Unix V7 для S_IRUSR.

stat.S_IWRITE

Синонім Unix V7 для S_IWUSR.

stat.S_IEXEC

Синонім Unix V7 для S_IXUSR.

Наступні позначки можна використовувати в аргументі flags os.chflags():

stat.UF_NODUMP

Не скидайте файл.

stat.UF_IMMUTABLE

Файл не можна змінювати.

stat.UF_APPEND

Файл можна лише додавати до.

stat.UF_OPAQUE

Каталог є непрозорим при перегляді через об’єднаний стек.

Файл не можна перейменовувати або видаляти.

stat.UF_COMPRESSED

Файл зберігається стисненим (macOS 10.6+).

stat.UF_HIDDEN

Файл не повинен відображатися в графічному інтерфейсі (macOS 10.5+).

stat.SF_ARCHIVED

Файл може бути заархівований.

stat.SF_IMMUTABLE

Файл не можна змінювати.

stat.SF_APPEND

Файл можна лише додавати до.

Файл не можна перейменовувати або видаляти.

stat.SF_SNAPSHOT

Файл є файлом знімка.

Для отримання додаткової інформації див. сторінку довідки систем *BSD або macOS chflags(2).

У Windows такі константи атрибутів файлів доступні для використання під час тестування бітів у члені st_file_attributes, який повертає os.stat(). Дивіться документацію Windows API, щоб дізнатися більше про значення цих констант.

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

Нове в версії 3.5.

У Windows такі константи доступні для порівняння з елементом st_reparse_tag, який повертає os.lstat(). Це добре відомі константи, але це не вичерпний список.

stat.IO_REPARSE_TAG_MOUNT_POINT

Нове в версії 3.8.