> **Источник:** https://python-all.ru/3/library/stat.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `stat` – Интерпретация результатов [`stat()`](https://python-all.ru/3/library/os.html#os.stat)

**Исходный код:** [Lib/stat.py](https://python-all.ru/src/3.14/Lib/stat.py)

---

Модуль `stat` определяет константы и функции для интерпретации результатов [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3/library/os.html#os.lstat) (если они существуют). За полными сведениями о вызовах `stat()`, `fstat()` и `lstat()` обращайтесь к документации вашей системы.

Изменено в версии 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)`

Возвращает ненулевое значение, если режим соответствует whiteout.

Добавлено в версии 3.4.

Определены ещё две функции для более общей работы с режимом файла:

#### `stat.S_IMODE(mode)`

Возвращает часть режима файла, которую можно установить с помощью [`os.chmod()`](https://python-all.ru/3/library/os.html#os.chmod) – то есть биты прав доступа к файлу, а также sticky-бит, биты set-group-id и set-user-id (в системах, где они поддерживаются).

#### `stat.S_IFMT(mode)`

Возвращает часть режима файла, описывающую тип файла (используется функциями `S_IS*()` выше).

Обычно для проверки типа файла используются функции `os.path.is*()`; приведённые здесь функции полезны, когда выполняется несколько проверок одного и того же файла и хочется избежать накладных расходов на системный вызов `stat()` для каждой проверки. Они также полезны при получении информации о файле, которая не обрабатывается [`os.path`](https://python-all.ru/3/library/os.path.html#module-os.path), например, при проверке блочных и символьных устройств.

Пример:

```python
import os, sys
from stat import *

def walktree(top, callback):
    '''рекурсивно обойти дерево каталогов, начиная с top,
       вызов функции обратного вызова для каждого обычного файла'''

    for f in os.listdir(top):
        pathname = os.path.join(top, f)
        mode = os.lstat(pathname).st_mode
        if S_ISDIR(mode):
            # Это каталог, рекурсивно зайти в него
            walktree(pathname, callback)
        elif S_ISREG(mode):
            # Это файл, вызвать функцию обратного вызова
            callback(pathname)
        else:
            # Неизвестный тип файла, вывести сообщение
            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`](https://python-all.ru/3/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3/library/stat.html#stat.S_IFPORT) и [`S_IFWHT`](https://python-all.ru/3/library/stat.html#stat.S_IFWHT).

Все приведенные ниже переменные – это просто символические индексы кортежа из 10 элементов, возвращаемого функциями [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3/library/os.html#os.lstat).

#### `stat.ST_MODE`

Режим защиты inode.

#### `stat.ST_INO`

Номер inode.

#### `stat.ST_DEV`

Устройство, на котором находится inode.

#### `stat.ST_NLINK`

Количество ссылок на inode.

#### `stat.ST_UID`

Идентификатор пользователя владельца.

#### `stat.ST_GID`

Идентификатор группы владельца.

#### `stat.ST_SIZE`

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

#### `stat.ST_ATIME`

Время последнего доступа.

#### `stat.ST_MTIME`

Время последнего изменения.

#### `stat.ST_CTIME`

«ctime» в том виде, в котором он сообщается операционной системой. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) – время создания (подробнее см. документацию платформы).

Интерпретация «размера файла» зависит от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO и сокетов в большинстве разновидностей Unix (включая Linux) «размер» – это количество байтов, ожидающих чтения на момент вызова [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3/library/os.html#os.lstat); это иногда может быть полезно, особенно для опроса одного из таких специальных файлов после неблокирующего открытия. Смысл поля размера для других символьных и блочных устройств варьируется сильнее в зависимости от реализации нижележащего системного вызова.

Приведенные ниже переменные определяют флаги, используемые в поле [`ST_MODE`](https://python-all.ru/3/library/stat.html#stat.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`

Whiteout.

Добавлено в версии 3.4.

> **Примечание**
>
> [`S_IFDOOR`](https://python-all.ru/3/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3/library/stat.html#stat.S_IFPORT) или [`S_IFWHT`](https://python-all.ru/3/library/stat.html#stat.S_IFWHT) определяются как\\n0, если платформа не поддерживает эти типы файлов.

Следующие флаги также можно использовать в аргументе *mode* функции [`os.chmod()`](https://python-all.ru/3/library/os.html#os.chmod):

#### `stat.S_ISUID`

Бит setuid.

#### `stat.S_ISGID`

Бит set-group-ID. Этот бит имеет несколько особых применений. Для каталога\\nон указывает, что для этого каталога используется семантика BSD:\\nсоздаваемые в нём файлы наследуют свой идентификатор группы от каталога, а не\\nот эффективного идентификатора группы создающего процесса, а создаваемые там\\nкаталоги также будут иметь установленный бит `S_ISGID`. Для\\nфайла, у которого не установлен бит выполнения для группы ([`S_IXGRP`](https://python-all.ru/3/library/stat.html#stat.S_IXGRP)),\\nбит set-group-ID указывает на обязательную блокировку файлов/записей\\n(см. также [`S_ENFMT`](https://python-all.ru/3/library/stat.html#stat.S_ENFMT)).

#### `stat.S_ISVTX`

Sticky bit. Когда этот бит установлен для каталога, это означает, что файл\\nв этом каталоге может быть переименован или удалён только владельцем\\nфайла, владельцем каталога или привилегированным процессом.

#### `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`](https://python-all.ru/3/library/stat.html#stat.S_ISGID): блокировка файлов/записей применяется к файлам, у которых не установлен бит выполнения группы ([`S_IXGRP`](https://python-all.ru/3/library/stat.html#stat.S_IXGRP)).

#### `stat.S_IREAD`

Синоним Unix V7 для [`S_IRUSR`](https://python-all.ru/3/library/stat.html#stat.S_IRUSR).

#### `stat.S_IWRITE`

Синоним Unix V7 для [`S_IWUSR`](https://python-all.ru/3/library/stat.html#stat.S_IWUSR).

#### `stat.S_IEXEC`

Синоним Unix V7 для [`S_IXUSR`](https://python-all.ru/3/library/stat.html#stat.S_IXUSR).

Следующие флаги можно использовать в аргументе *flags* функции [`os.chflags()`](https://python-all.ru/3/library/os.html#os.chflags):

#### `stat.UF_SETTABLE`

Все устанавливаемые пользователем флаги.

Добавлено в версии 3.13.

#### `stat.UF_NODUMP`

Не сбрасывать файл в дамп.

#### `stat.UF_IMMUTABLE`

Файл не может быть изменён.

#### `stat.UF_APPEND`

Файл можно только дополнять.

#### `stat.UF_OPAQUE`

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

#### `stat.UF_NOUNLINK`

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

#### `stat.UF_COMPRESSED`

Файл хранится в сжатом виде (macOS 10.6+).

#### `stat.UF_TRACKED`

Используется для обработки идентификаторов документов (macOS).

Добавлено в версии 3.13.

#### `stat.UF_DATAVAULT`

Для чтения или записи файла требуется entitlement (macOS 10.13+).

Добавлено в версии 3.13.

#### `stat.UF_HIDDEN`

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

#### `stat.SF_SETTABLE`

Все флаги, доступные для изменения суперпользователем.

Добавлено в версии 3.13.

#### `stat.SF_SUPPORTED`

Все флаги, поддерживаемые суперпользователем.

[Доступность](https://python-all.ru/3/library/intro.html#availability): macOS

Добавлено в версии 3.13.

#### `stat.SF_SYNTHETIC`

Все синтетические флаги суперпользователя, доступные только для чтения.

[Доступность](https://python-all.ru/3/library/intro.html#availability): macOS

Добавлено в версии 3.13.

#### `stat.SF_ARCHIVED`

Файл может быть архивирован.

#### `stat.SF_IMMUTABLE`

Файл нельзя изменить.

#### `stat.SF_APPEND`

Файл можно только дополнять.

#### `stat.SF_RESTRICTED`

Для записи в файл требуется entitlement (macOS 10.13+).

Добавлено в версии 3.13.

#### `stat.SF_NOUNLINK`

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

#### `stat.SF_SNAPSHOT`

Файл является снимком.

#### `stat.SF_FIRMLINK`

Файл – это firmlink (macOS 10.15+)

Добавлено в версии 3.13.

#### `stat.SF_DATALESS`

Файл – это dataless-объект (macOS 10.15+)

Добавлено в версии 3.13.

Для получения дополнительной информации смотрите страницу руководства *[chflags(2)](https://python-all.ru/3/library/stat.html)* в системах \*BSD или macOS.

В Windows для проверки битов в члене `st_file_attributes`, возвращаемом функцией [`os.stat()`](https://python-all.ru/3/library/os.html#os.stat), доступны следующие константы атрибутов файла. Для получения более подробной информации о значении этих констант смотрите [документацию Windows API](https://python-all.ru/3/library/stat.html).

#### `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()`](https://python-all.ru/3/library/os.html#os.lstat), доступны следующие константы. Это общеизвестные константы, но список не является исчерпывающим.

#### `stat.IO_REPARSE_TAG_SYMLINK`

#### `stat.IO_REPARSE_TAG_MOUNT_POINT`

#### `stat.IO_REPARSE_TAG_APPEXECLINK`

Добавлено в версии 3.8.
