# `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 пристрою знаходиться на.

`stat.``ST_NLINK`

  Кількість посилань на 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_NOUNLINK`

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

`stat.``UF_COMPRESSED`

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

`stat.``UF_HIDDEN`

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

`stat.``SF_ARCHIVED`

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

`stat.``SF_IMMUTABLE`

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

`stat.``SF_APPEND`

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

`stat.``SF_NOUNLINK`

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

`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_SYMLINK`
`stat.``IO_REPARSE_TAG_MOUNT_POINT`
`stat.``IO_REPARSE_TAG_APPEXECLINK`

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