stat.md
1> **Источник:** https://python-all.ru/3.4/library/stat.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 11.4. [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat) – Интерпретация результатов [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat)89****Исходный код:** [Modules/\_stat.c](https://python-all.ru/src/3.4/Modules/_stat.c)**1011[Lib/stat.py](https://python-all.ru/src/3.4/Lib/stat.py)1213---1415Модуль [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat) определяет константы и функции для интерпретации результатов [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.4/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat) (если они существуют). За полной информацией о вызовах `stat()`, `fstat()` и `lstat()` обращайтесь к документации вашей системы.1617Изменено в версии 3.4: Модуль stat реализован на C.1819Модуль [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat) определяет следующие функции для проверки конкретных типов файлов:2021#### `stat.S_ISDIR(mode)`2223Возвращает ненулевое значение, если режим соответствует каталогу.2425#### `stat.S_ISCHR(mode)`2627Возвращает ненулевое значение, если режим соответствует файлу символьного устройства.2829#### `stat.S_ISBLK(mode)`3031Возвращает ненулевое значение, если режим соответствует файлу блочного устройства.3233#### `stat.S_ISREG(mode)`3435Возвращает ненулевое значение, если режим соответствует обычному файлу.3637#### `stat.S_ISFIFO(mode)`3839Возвращает ненулевое значение, если режим соответствует FIFO (именованному каналу).4041#### `stat.S_ISLNK(mode)`4243Возвращает ненулевое значение, если режим соответствует символической ссылке.4445#### `stat.S_ISSOCK(mode)`4647Возвращает ненулевое значение, если режим соответствует сокету.4849#### `stat.S_ISDOOR(mode)`5051Возвращает ненулевое значение, если режим соответствует двери.5253Новое в версии 3.4.5455#### `stat.S_ISPORT(mode)`5657Возвращает ненулевое значение, если режим соответствует порту событий.5859Новое в версии 3.4.6061#### `stat.S_ISWHT(mode)`6263Возвращает ненулевое значение, если режим соответствует whiteout.6465Новое в версии 3.4.6667Определены ещё две функции для более общей работы с режимом файла:6869#### `stat.S_IMODE(mode)`7071Возвращает часть режима файла, которая может быть установлена с помощью [`os.chmod()`](https://python-all.ru/3.4/library/os.html#os.chmod) – то есть биты разрешений файла, а также биты sticky, set-group-id и set-user-id (в системах, которые их поддерживают).7273#### `stat.S_IFMT(mode)`7475Возвращает часть режима файла, которая описывает тип файла (используется функциями `S_IS*()` выше).7677Обычно для проверки типа файла используются функции `os.path.is*()`; функции, описанные здесь, бывают полезны, когда выполняется несколько проверок одного файла, и хочется избежать накладных расходов на системный вызов `stat()` для каждой проверки. Они также пригодятся при получении информации о файле, которая не обрабатывается модулем [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path), например, проверки блочных и символьных устройств.7879Пример:8081```python82import os, sys83from stat import *8485def walktree(top, callback):86 '''рекурсивно обойти дерево каталогов, начиная с top,87 вызов функции обратного вызова для каждого обычного файла'''8889 for f in os.listdir(top):90 pathname = os.path.join(top, f)91 mode = os.stat(pathname).st_mode92 if S_ISDIR(mode):93 # Это каталог, рекурсивно зайти в него94 walktree(pathname, callback)95 elif S_ISREG(mode):96 # Это файл, вызвать функцию обратного вызова97 callback(pathname)98 else:99 # Неизвестный тип файла, вывести сообщение100 print('Skipping %s' % pathname)101102def visitfile(file):103 print('visiting', file)104105if __name__ == '__main__':106 walktree(sys.argv[1], visitfile)107```108109Предоставляется дополнительная функция для преобразования режима файла в человекочитаемую строку:110111#### `stat.filemode(mode)`112113Преобразует режим файла в строку вида ‘-rwxrwxrwx’.114115Новое в версии 3.3.116117Изменено в версии 3.4: Функция поддерживает [`S_IFDOOR`](https://python-all.ru/3.4/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3.4/library/stat.html#stat.S_IFPORT) и [`S_IFWHT`](https://python-all.ru/3.4/library/stat.html#stat.S_IFWHT).118119Все приведённые ниже переменные – это просто символические индексы в 10-кортеже, возвращаемом [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.4/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat).120121#### `stat.ST_MODE`122123Режим защиты inode.124125#### `stat.ST_INO`126127Номер inode.128129#### `stat.ST_DEV`130131Устройство, на котором находится inode.132133#### `stat.ST_NLINK`134135Количество ссылок на inode.136137#### `stat.ST_UID`138139Идентификатор пользователя владельца.140141#### `stat.ST_GID`142143Идентификатор группы владельца.144145#### `stat.ST_SIZE`146147Размер обычного файла в байтах; количество данных, ожидающих чтения на некоторых специальных файлах.148149#### `stat.ST_ATIME`150151Время последнего доступа.152153#### `stat.ST_MTIME`154155Время последнего изменения.156157#### `stat.ST_CTIME`158159«ctime» в том виде, в котором он сообщается операционной системой. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) – время создания (подробнее см. документацию платформы).160161Интерпретация «размера файла» меняется в зависимости от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO (именованных каналов) и сокетов в большинстве вариантов Unix (включая Linux) «размер» – это количество байтов, ожидающих чтения на момент вызова [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.4/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat); это может быть полезно, например, для опроса одного из этих специальных файлов после неблокирующего открытия. Значение поля размера для других символьных и блочных устройств сильно варьируется в зависимости от реализации базового системного вызова.162163Приведённые ниже переменные определяют флаги, используемые в поле [`ST_MODE`](https://python-all.ru/3.4/library/stat.html#stat.ST_MODE).164165Использование приведенных выше функций более переносимо, чем использование первого набора флагов:166167#### `stat.S_IFSOCK`168169Сокет.170171#### `stat.S_IFLNK`172173Символическая ссылка.174175#### `stat.S_IFREG`176177Обычный файл.178179#### `stat.S_IFBLK`180181Блочное устройство.182183#### `stat.S_IFDIR`184185Каталог.186187#### `stat.S_IFCHR`188189Символьное устройство.190191#### `stat.S_IFIFO`192193FIFO.194195#### `stat.S_IFDOOR`196197Дверь.198199Новое в версии 3.4.200201#### `stat.S_IFPORT`202203Порт событий.204205Новое в версии 3.4.206207#### `stat.S_IFWHT`208209Белая маска.210211Новое в версии 3.4.212213> **Примечание**214>215> [`S_IFDOOR`](https://python-all.ru/3.4/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3.4/library/stat.html#stat.S_IFPORT) или [`S_IFWHT`](https://python-all.ru/3.4/library/stat.html#stat.S_IFWHT) определены как 0, если платформа не поддерживает эти типы файлов.216217Следующие флаги также можно использовать в аргументе *mode* функции [`os.chmod()`](https://python-all.ru/3.4/library/os.html#os.chmod):218219#### `stat.S_ISUID`220221Бит setuid.222223#### `stat.S_ISGID`224225Бит установки идентификатора группы. Этот бит имеет несколько специальных применений. Для каталога он указывает, что для этого каталога должна использоваться семантика BSD: создаваемые там файлы наследуют свой идентификатор группы от каталога, а не от эффективного идентификатора группы создающего процесса, а создаваемые там каталоги также получат установленный бит [`S_ISGID`](https://python-all.ru/3.4/library/stat.html#stat.S_ISGID). Для файла, у которого не установлен бит выполнения для группы ([`S_IXGRP`](https://python-all.ru/3.4/library/stat.html#stat.S_IXGRP)), бит установки идентификатора группы указывает на обязательную блокировку файла/записи (см. также [`S_ENFMT`](https://python-all.ru/3.4/library/stat.html#stat.S_ENFMT)).226227#### `stat.S_ISVTX`228229Sticky bit. Когда этот бит установлен для каталога, это означает, что файл\\nв этом каталоге может быть переименован или удалён только владельцем\\nфайла, владельцем каталога или привилегированным процессом.230231#### `stat.S_IRWXU`232233Маска для прав владельца файла.234235#### `stat.S_IRUSR`236237Владелец имеет право на чтение.238239#### `stat.S_IWUSR`240241Владелец имеет право на запись.242243#### `stat.S_IXUSR`244245Владелец имеет право на выполнение.246247#### `stat.S_IRWXG`248249Маска для прав группы.250251#### `stat.S_IRGRP`252253Группа имеет право на чтение.254255#### `stat.S_IWGRP`256257Группа имеет право на запись.258259#### `stat.S_IXGRP`260261Группа имеет право на выполнение.262263#### `stat.S_IRWXO`264265Маска прав для остальных (не входящих в группу).266267#### `stat.S_IROTH`268269Остальные имеют право на чтение.270271#### `stat.S_IWOTH`272273Остальные имеют право на запись.274275#### `stat.S_IXOTH`276277Остальные имеют право на выполнение.278279#### `stat.S_ENFMT`280281Принудительная блокировка файлов System V. Этот флаг используется совместно с [`S_ISGID`](https://python-all.ru/3.4/library/stat.html#stat.S_ISGID):\\nблокировка файлов/записей применяется к файлам, у которых не установлен бит выполнения\\nгруппы ([`S_IXGRP`](https://python-all.ru/3.4/library/stat.html#stat.S_IXGRP)).282283#### `stat.S_IREAD`284285Синоним Unix V7 для [`S_IRUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IRUSR).286287#### `stat.S_IWRITE`288289Синоним Unix V7 для [`S_IWUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IWUSR).290291#### `stat.S_IEXEC`292293Синоним Unix V7 для [`S_IXUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IXUSR).294295Следующие флаги можно использовать в аргументе *flags* функции [`os.chflags()`](https://python-all.ru/3.4/library/os.html#os.chflags):296297#### `stat.UF_NODUMP`298299Не сбрасывать файл в дамп.300301#### `stat.UF_IMMUTABLE`302303Файл нельзя изменить.304305#### `stat.UF_APPEND`306307Файл можно только дополнять.308309#### `stat.UF_OPAQUE`310311Каталог непрозрачен при просмотре через стек объединения.312313#### `stat.UF_NOUNLINK`314315Файл нельзя переименовать или удалить.316317#### `stat.UF_COMPRESSED`318319Файл сохраняется в сжатом виде (Mac OS X 10.6+).320321#### `stat.UF_HIDDEN`322323Файл не должен отображаться в графическом интерфейсе (Mac OS X 10.5+).324325#### `stat.SF_ARCHIVED`326327Файл может быть архивирован.328329#### `stat.SF_IMMUTABLE`330331Файл нельзя изменить.332333#### `stat.SF_APPEND`334335Файл можно только дополнять.336337#### `stat.SF_NOUNLINK`338339Файл нельзя переименовать или удалить.340341#### `stat.SF_SNAPSHOT`342343Файл является снимком.344345Для получения дополнительной информации обратитесь к man-странице *chflags(2)* в системах \*BSD или Mac OS.346