stat.md
1> **Источник:** https://python-all.ru/3.2/library/stat.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 10.3. [`stat`](https://python-all.ru/3.2/library/stat.html#module-stat) – Интерпретация [`stat()`](https://python-all.ru/3.2/library/stat.html#module-stat) результатов89**Исходный код:** [Lib/stat.py](https://python-all.ru/src/3.2/Lib/stat.py)1011---1213Модуль [`stat`](https://python-all.ru/3.2/library/stat.html#module-stat) определяет константы и функции для интерпретации результатов [`os.stat()`](https://python-all.ru/3.2/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.2/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.2/library/os.html#os.lstat) (если они существуют). За полной информацией о вызовах `stat()`, `fstat()` и `lstat()` обращайтесь к документации вашей системы.1415Модуль [`stat`](https://python-all.ru/3.2/library/stat.html#module-stat) определяет следующие функции для проверки конкретных типов файлов:1617#### `stat.S_ISDIR(mode)`1819Возвращает ненулевое значение, если режим соответствует каталогу.2021#### `stat.S_ISCHR(mode)`2223Возвращает ненулевое значение, если режим соответствует файлу символьного устройства.2425#### `stat.S_ISBLK(mode)`2627Возвращает ненулевое значение, если режим соответствует файлу блочного устройства.2829#### `stat.S_ISREG(mode)`3031Возвращает ненулевое значение, если режим соответствует обычному файлу.3233#### `stat.S_ISFIFO(mode)`3435Возвращает ненулевое значение, если режим соответствует FIFO (именованному каналу).3637#### `stat.S_ISLNK(mode)`3839Возвращает ненулевое значение, если режим соответствует символической ссылке.4041#### `stat.S_ISSOCK(mode)`4243Возвращает ненулевое значение, если режим соответствует сокету.4445Определены ещё две функции для более общей работы с режимом файла:4647#### `stat.S_IMODE(mode)`4849Возвращает часть режима файла, которая может быть установлена с помощью [`os.chmod()`](https://python-all.ru/3.2/library/os.html#os.chmod) – то есть биты разрешений файла, а также биты sticky, set-group-id и set-user-id (в системах, которые их поддерживают).5051#### `stat.S_IFMT(mode)`5253Возвращает часть режима файла, которая описывает тип файла (используется функциями `S_IS*()` выше).5455Обычно для проверки типа файла используются функции `os.path.is*()`; функции, описанные здесь, бывают полезны, когда выполняется несколько проверок одного файла, и хочется избежать накладных расходов на системный вызов `stat()` для каждой проверки. Они также пригодятся при получении информации о файле, которая не обрабатывается модулем [`os.path`](https://python-all.ru/3.2/library/os.path.html#module-os.path), например, проверки блочных и символьных устройств.5657Пример:5859```python60import os, sys61from stat import *6263def walktree(top, callback):64 '''рекурсивно обойти дерево каталогов, начиная с top,65 вызов функции обратного вызова для каждого обычного файла'''6667 for f in os.listdir(top):68 pathname = os.path.join(top, f)69 mode = os.stat(pathname).st_mode70 if S_ISDIR(mode):71 # Это каталог, рекурсивно зайти в него72 walktree(pathname, callback)73 elif S_ISREG(mode):74 # Это файл, вызвать функцию обратного вызова75 callback(pathname)76 else:77 # Неизвестный тип файла, вывести сообщение78 print('Skipping %s' % pathname)7980def visitfile(file):81 print('visiting', file)8283if __name__ == '__main__':84 walktree(sys.argv[1], visitfile)85```8687Все приведённые ниже переменные – это просто символические индексы в 10-кортеже, возвращаемом [`os.stat()`](https://python-all.ru/3.2/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.2/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.2/library/os.html#os.lstat).8889#### `stat.ST_MODE`9091Режим защиты inode.9293#### `stat.ST_INO`9495Номер inode.9697#### `stat.ST_DEV`9899Устройство, на котором находится inode.100101#### `stat.ST_NLINK`102103Количество ссылок на inode.104105#### `stat.ST_UID`106107Идентификатор пользователя владельца.108109#### `stat.ST_GID`110111Идентификатор группы владельца.112113#### `stat.ST_SIZE`114115Размер обычного файла в байтах; количество данных, ожидающих чтения на некоторых специальных файлах.116117#### `stat.ST_ATIME`118119Время последнего доступа.120121#### `stat.ST_MTIME`122123Время последнего изменения.124125#### `stat.ST_CTIME`126127«ctime» в том виде, в котором он сообщается операционной системой. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) – время создания (подробнее см. документацию платформы).128129Интерпретация «размера файла» меняется в зависимости от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO (именованных каналов) и сокетов в большинстве вариантов Unix (включая Linux) «размер» – это количество байтов, ожидающих чтения на момент вызова [`os.stat()`](https://python-all.ru/3.2/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.2/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.2/library/os.html#os.lstat); это может быть полезно, например, для опроса одного из этих специальных файлов после неблокирующего открытия. Значение поля размера для других символьных и блочных устройств сильно варьируется в зависимости от реализации базового системного вызова.130131Приведённые ниже переменные определяют флаги, используемые в поле [`ST_MODE`](https://python-all.ru/3.2/library/stat.html#stat.ST_MODE).132133Использование приведенных выше функций более переносимо, чем использование первого набора флагов:134135#### `stat.S_IFMT`136137Битовая маска для битовых полей типа файла.138139#### `stat.S_IFSOCK`140141Сокет.142143#### `stat.S_IFLNK`144145Символическая ссылка.146147#### `stat.S_IFREG`148149Обычный файл.150151#### `stat.S_IFBLK`152153Блочное устройство.154155#### `stat.S_IFDIR`156157Каталог.158159#### `stat.S_IFCHR`160161Символьное устройство.162163#### `stat.S_IFIFO`164165FIFO.166167Следующие флаги также можно использовать в аргументе *mode* функции [`os.chmod()`](https://python-all.ru/3.2/library/os.html#os.chmod):168169#### `stat.S_ISUID`170171Бит setuid.172173#### `stat.S_ISGID`174175Бит установки идентификатора группы. Этот бит имеет несколько специальных применений. Для каталога он указывает, что для этого каталога должна использоваться семантика BSD: создаваемые там файлы наследуют свой идентификатор группы от каталога, а не от эффективного идентификатора группы создающего процесса, а создаваемые там каталоги также получат установленный бит [`S_ISGID`](https://python-all.ru/3.2/library/stat.html#stat.S_ISGID). Для файла, у которого не установлен бит выполнения для группы ([`S_IXGRP`](https://python-all.ru/3.2/library/stat.html#stat.S_IXGRP)), бит установки идентификатора группы указывает на обязательную блокировку файла/записи (см. также [`S_ENFMT`](https://python-all.ru/3.2/library/stat.html#stat.S_ENFMT)).176177#### `stat.S_ISVTX`178179Sticky bit. Когда этот бит установлен для каталога, это означает, что файл\\nв этом каталоге может быть переименован или удалён только владельцем\\nфайла, владельцем каталога или привилегированным процессом.180181#### `stat.S_IRWXU`182183Маска для прав владельца файла.184185#### `stat.S_IRUSR`186187Владелец имеет право на чтение.188189#### `stat.S_IWUSR`190191Владелец имеет право на запись.192193#### `stat.S_IXUSR`194195Владелец имеет право на выполнение.196197#### `stat.S_IRWXG`198199Маска для прав группы.200201#### `stat.S_IRGRP`202203Группа имеет право на чтение.204205#### `stat.S_IWGRP`206207Группа имеет право на запись.208209#### `stat.S_IXGRP`210211Группа имеет право на выполнение.212213#### `stat.S_IRWXO`214215Маска прав для остальных (не входящих в группу).216217#### `stat.S_IROTH`218219Остальные имеют право на чтение.220221#### `stat.S_IWOTH`222223Остальные имеют право на запись.224225#### `stat.S_IXOTH`226227Остальные имеют право на выполнение.228229#### `stat.S_ENFMT`230231Принудительная блокировка файлов System V. Этот флаг используется совместно с [`S_ISGID`](https://python-all.ru/3.2/library/stat.html#stat.S_ISGID):\\nблокировка файлов/записей применяется к файлам, у которых не установлен бит выполнения\\nгруппы ([`S_IXGRP`](https://python-all.ru/3.2/library/stat.html#stat.S_IXGRP)).232233#### `stat.S_IREAD`234235Синоним Unix V7 для [`S_IRUSR`](https://python-all.ru/3.2/library/stat.html#stat.S_IRUSR).236237#### `stat.S_IWRITE`238239Синоним Unix V7 для [`S_IWUSR`](https://python-all.ru/3.2/library/stat.html#stat.S_IWUSR).240241#### `stat.S_IEXEC`242243Синоним Unix V7 для [`S_IXUSR`](https://python-all.ru/3.2/library/stat.html#stat.S_IXUSR).244245Следующие флаги можно использовать в аргументе *flags* функции [`os.chflags()`](https://python-all.ru/3.2/library/os.html#os.chflags):246247#### `stat.UF_NODUMP`248249Не сбрасывать файл в дамп.250251#### `stat.UF_IMMUTABLE`252253Файл нельзя изменить.254255#### `stat.UF_APPEND`256257Файл можно только дополнять.258259#### `stat.UF_OPAQUE`260261Каталог непрозрачен при просмотре через стек объединения.262263#### `stat.UF_NOUNLINK`264265Файл нельзя переименовать или удалить.266267#### `stat.UF_COMPRESSED`268269Файл сохраняется в сжатом виде (Mac OS X 10.6+).270271#### `stat.UF_HIDDEN`272273Файл не должен отображаться в графическом интерфейсе (Mac OS X 10.5+).274275#### `stat.SF_ARCHIVED`276277Файл может быть архивирован.278279#### `stat.SF_IMMUTABLE`280281Файл нельзя изменить.282283#### `stat.SF_APPEND`284285Файл можно только дополнять.286287#### `stat.SF_NOUNLINK`288289Файл нельзя переименовать или удалить.290291#### `stat.SF_SNAPSHOT`292293Файл является снимком.294295Для получения дополнительной информации обратитесь к man-странице *chflags(2)* в системах \*BSD или Mac OS.296