stat.md
1> **Источник:** https://python-all.ru/3.14/library/stat.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `stat` – Интерпретация результатов [`stat()`](https://python-all.ru/3.14/library/os.html#os.stat)89**Исходный код:** [Lib/stat.py](https://python-all.ru/src/3.14/Lib/stat.py)1011---1213Модуль `stat` определяет константы и функции для интерпретации результатов [`os.stat()`](https://python-all.ru/3.14/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.14/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.14/library/os.html#os.lstat) (если они существуют). За полными сведениями о вызовах `stat()`, `fstat()` и `lstat()` обращайтесь к документации вашей системы.1415Изменено в версии 3.4: Модуль stat реализован на C.1617Модуль `stat` определяет следующие функции для проверки определённых типов файлов:1819#### `stat.S_ISDIR(mode)`2021Возвращает ненулевое значение, если режим соответствует каталогу.2223#### `stat.S_ISCHR(mode)`2425Возвращает ненулевое значение, если режим соответствует файлу символьного устройства.2627#### `stat.S_ISBLK(mode)`2829Возвращает ненулевое значение, если режим соответствует файлу блочного устройства.3031#### `stat.S_ISREG(mode)`3233Возвращает ненулевое значение, если режим соответствует обычному файлу.3435#### `stat.S_ISFIFO(mode)`3637Возвращает ненулевое значение, если режим соответствует FIFO (именованному каналу).3839#### `stat.S_ISLNK(mode)`4041Возвращает ненулевое значение, если режим соответствует символической ссылке.4243#### `stat.S_ISSOCK(mode)`4445Возвращает ненулевое значение, если режим соответствует сокету.4647#### `stat.S_ISDOOR(mode)`4849Возвращает ненулевое значение, если режим соответствует двери.5051Добавлено в версии 3.4.5253#### `stat.S_ISPORT(mode)`5455Возвращает ненулевое значение, если режим соответствует порту событий.5657Добавлено в версии 3.4.5859#### `stat.S_ISWHT(mode)`6061Возвращает ненулевое значение, если режим соответствует whiteout.6263Добавлено в версии 3.4.6465Определены ещё две функции для более общей работы с режимом файла:6667#### `stat.S_IMODE(mode)`6869Возвращает часть режима файла, которую можно установить с помощью [`os.chmod()`](https://python-all.ru/3.14/library/os.html#os.chmod) – то есть биты прав доступа к файлу, а также sticky-бит, биты set-group-id и set-user-id (в системах, где они поддерживаются).7071#### `stat.S_IFMT(mode)`7273Возвращает часть режима файла, описывающую тип файла (используется функциями `S_IS*()` выше).7475Обычно для проверки типа файла используются функции `os.path.is*()`; приведённые здесь функции полезны, когда выполняется несколько проверок одного и того же файла и хочется избежать накладных расходов на системный вызов `stat()` для каждой проверки. Они также полезны при получении информации о файле, которая не обрабатывается [`os.path`](https://python-all.ru/3.14/library/os.path.html#module-os.path), например, при проверке блочных и символьных устройств.7677Пример:7879```python80import os, sys81from stat import *8283def walktree(top, callback):84 '''рекурсивно обойти дерево каталогов, начиная с top,85 вызов функции обратного вызова для каждого обычного файла'''8687 for f in os.listdir(top):88 pathname = os.path.join(top, f)89 mode = os.lstat(pathname).st_mode90 if S_ISDIR(mode):91 # Это каталог, рекурсивно зайти в него92 walktree(pathname, callback)93 elif S_ISREG(mode):94 # Это файл, вызвать функцию обратного вызова95 callback(pathname)96 else:97 # Неизвестный тип файла, вывести сообщение98 print('Skipping %s' % pathname)99100def visitfile(file):101 print('visiting', file)102103if __name__ == '__main__':104 walktree(sys.argv[1], visitfile)105```106107Предоставляется дополнительная утилита для преобразования режима файла в читаемую строку:108109#### `stat.filemode(mode)`110111Преобразует режим файла в строку вида ‘-rwxrwxrwx’.112113Добавлено в версии 3.3.114115Изменено в версии 3.4: Функция поддерживает [`S_IFDOOR`](https://python-all.ru/3.14/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3.14/library/stat.html#stat.S_IFPORT) и [`S_IFWHT`](https://python-all.ru/3.14/library/stat.html#stat.S_IFWHT).116117Все приведенные ниже переменные – это просто символические индексы кортежа из 10 элементов, возвращаемого функциями [`os.stat()`](https://python-all.ru/3.14/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.14/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.14/library/os.html#os.lstat).118119#### `stat.ST_MODE`120121Режим защиты inode.122123#### `stat.ST_INO`124125Номер inode.126127#### `stat.ST_DEV`128129Устройство, на котором находится inode.130131#### `stat.ST_NLINK`132133Количество ссылок на inode.134135#### `stat.ST_UID`136137Идентификатор пользователя владельца.138139#### `stat.ST_GID`140141Идентификатор группы владельца.142143#### `stat.ST_SIZE`144145Размер обычного файла в байтах; количество данных, ожидающих чтения на некоторых специальных файлах.146147#### `stat.ST_ATIME`148149Время последнего доступа.150151#### `stat.ST_MTIME`152153Время последнего изменения.154155#### `stat.ST_CTIME`156157«ctime» в том виде, в котором он сообщается операционной системой. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) – время создания (подробнее см. документацию платформы).158159Интерпретация «размера файла» зависит от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO и сокетов в большинстве разновидностей Unix (включая Linux) «размер» – это количество байтов, ожидающих чтения на момент вызова [`os.stat()`](https://python-all.ru/3.14/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.14/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.14/library/os.html#os.lstat); это иногда может быть полезно, особенно для опроса одного из таких специальных файлов после неблокирующего открытия. Смысл поля размера для других символьных и блочных устройств варьируется сильнее в зависимости от реализации нижележащего системного вызова.160161Приведенные ниже переменные определяют флаги, используемые в поле [`ST_MODE`](https://python-all.ru/3.14/library/stat.html#stat.ST_MODE).162163Использование приведенных выше функций более переносимо, чем использование первого набора флагов:164165#### `stat.S_IFSOCK`166167Сокет.168169#### `stat.S_IFLNK`170171Символическая ссылка.172173#### `stat.S_IFREG`174175Обычный файл.176177#### `stat.S_IFBLK`178179Блочное устройство.180181#### `stat.S_IFDIR`182183Каталог.184185#### `stat.S_IFCHR`186187Символьное устройство.188189#### `stat.S_IFIFO`190191FIFO.192193#### `stat.S_IFDOOR`194195Дверь.196197Добавлено в версии 3.4.198199#### `stat.S_IFPORT`200201Порт событий.202203Добавлено в версии 3.4.204205#### `stat.S_IFWHT`206207Белая маска.208209Добавлено в версии 3.4.210211> **Примечание**212>213> [`S_IFDOOR`](https://python-all.ru/3.14/library/stat.html#stat.S_IFDOOR), [`S_IFPORT`](https://python-all.ru/3.14/library/stat.html#stat.S_IFPORT) или [`S_IFWHT`](https://python-all.ru/3.14/library/stat.html#stat.S_IFWHT) определяются как\\n0, если платформа не поддерживает эти типы файлов.214215Следующие флаги также можно использовать в аргументе *mode* функции [`os.chmod()`](https://python-all.ru/3.14/library/os.html#os.chmod):216217#### `stat.S_ISUID`218219Бит setuid.220221#### `stat.S_ISGID`222223Бит set-group-ID. Этот бит имеет несколько особых применений. Для каталога\\nон указывает, что для этого каталога используется семантика BSD:\\nсоздаваемые в нём файлы наследуют свой идентификатор группы от каталога, а не\\nот эффективного идентификатора группы создающего процесса, а создаваемые там\\nкаталоги также будут иметь установленный бит `S_ISGID`. Для\\nфайла, у которого не установлен бит выполнения для группы ([`S_IXGRP`](https://python-all.ru/3.14/library/stat.html#stat.S_IXGRP)),\\nбит set-group-ID указывает на обязательную блокировку файлов/записей\\n(см. также [`S_ENFMT`](https://python-all.ru/3.14/library/stat.html#stat.S_ENFMT)).224225#### `stat.S_ISVTX`226227Sticky bit. Когда этот бит установлен для каталога, это означает, что файл\\nв этом каталоге может быть переименован или удалён только владельцем\\nфайла, владельцем каталога или привилегированным процессом.228229#### `stat.S_IRWXU`230231Маска для прав владельца файла.232233#### `stat.S_IRUSR`234235Владелец имеет право на чтение.236237#### `stat.S_IWUSR`238239Владелец имеет право на запись.240241#### `stat.S_IXUSR`242243Владелец имеет право на выполнение.244245#### `stat.S_IRWXG`246247Маска для прав группы.248249#### `stat.S_IRGRP`250251Группа имеет право на чтение.252253#### `stat.S_IWGRP`254255Группа имеет право на запись.256257#### `stat.S_IXGRP`258259Группа имеет право на выполнение.260261#### `stat.S_IRWXO`262263Маска прав для остальных (не входящих в группу).264265#### `stat.S_IROTH`266267Остальные имеют право на чтение.268269#### `stat.S_IWOTH`270271Остальные имеют право на запись.272273#### `stat.S_IXOTH`274275Остальные имеют право на выполнение.276277#### `stat.S_ENFMT`278279Принудительная блокировка файлов System V. Этот флаг разделяется с [`S_ISGID`](https://python-all.ru/3.14/library/stat.html#stat.S_ISGID): блокировка файлов/записей применяется к файлам, у которых не установлен бит выполнения группы ([`S_IXGRP`](https://python-all.ru/3.14/library/stat.html#stat.S_IXGRP)).280281#### `stat.S_IREAD`282283Синоним Unix V7 для [`S_IRUSR`](https://python-all.ru/3.14/library/stat.html#stat.S_IRUSR).284285#### `stat.S_IWRITE`286287Синоним Unix V7 для [`S_IWUSR`](https://python-all.ru/3.14/library/stat.html#stat.S_IWUSR).288289#### `stat.S_IEXEC`290291Синоним Unix V7 для [`S_IXUSR`](https://python-all.ru/3.14/library/stat.html#stat.S_IXUSR).292293Следующие флаги можно использовать в аргументе *flags* функции [`os.chflags()`](https://python-all.ru/3.14/library/os.html#os.chflags):294295#### `stat.UF_SETTABLE`296297Все устанавливаемые пользователем флаги.298299Добавлено в версии 3.13.300301#### `stat.UF_NODUMP`302303Не сбрасывать файл в дамп.304305#### `stat.UF_IMMUTABLE`306307Файл нельзя изменить.308309#### `stat.UF_APPEND`310311Файл можно только дополнять.312313#### `stat.UF_OPAQUE`314315Каталог непрозрачен при просмотре через стек объединения.316317#### `stat.UF_NOUNLINK`318319Файл нельзя переименовать или удалить.320321#### `stat.UF_COMPRESSED`322323Файл хранится в сжатом виде (macOS 10.6+).324325#### `stat.UF_TRACKED`326327Используется для обработки идентификаторов документов (macOS).328329Добавлено в версии 3.13.330331#### `stat.UF_DATAVAULT`332333Для чтения или записи файла требуется entitlement (macOS 10.13+).334335Добавлено в версии 3.13.336337#### `stat.UF_HIDDEN`338339Файл не должен отображаться в графическом интерфейсе (macOS 10.5+).340341#### `stat.SF_SETTABLE`342343Все флаги, доступные для изменения суперпользователем.344345Добавлено в версии 3.13.346347#### `stat.SF_SUPPORTED`348349Все флаги, поддерживаемые суперпользователем.350351[Доступность](https://python-all.ru/3.14/library/intro.html#availability): macOS352353Добавлено в версии 3.13.354355#### `stat.SF_SYNTHETIC`356357Все синтетические флаги суперпользователя, доступные только для чтения.358359[Доступность](https://python-all.ru/3.14/library/intro.html#availability): macOS360361Добавлено в версии 3.13.362363#### `stat.SF_ARCHIVED`364365Файл может быть архивирован.366367#### `stat.SF_IMMUTABLE`368369Файл нельзя изменить.370371#### `stat.SF_APPEND`372373Файл можно только дополнять.374375#### `stat.SF_RESTRICTED`376377Для записи в файл требуется entitlement (macOS 10.13+).378379Добавлено в версии 3.13.380381#### `stat.SF_NOUNLINK`382383Файл нельзя переименовать или удалить.384385#### `stat.SF_SNAPSHOT`386387Файл является снимком.388389#### `stat.SF_FIRMLINK`390391Файл – это firmlink (macOS 10.15+)392393Добавлено в версии 3.13.394395#### `stat.SF_DATALESS`396397Файл – это dataless-объект (macOS 10.15+)398399Добавлено в версии 3.13.400401Для получения дополнительной информации смотрите страницу руководства *[chflags(2)](https://python-all.ru/3.14/library/stat.html)* в системах \*BSD или macOS.402403В Windows для проверки битов в члене `st_file_attributes`, возвращаемом функцией [`os.stat()`](https://python-all.ru/3.14/library/os.html#os.stat), доступны следующие константы атрибутов файла. Для получения более подробной информации о значении этих констант смотрите [документацию Windows API](https://python-all.ru/3.14/library/stat.html).404405#### `stat.FILE_ATTRIBUTE_ARCHIVE`406407#### `stat.FILE_ATTRIBUTE_COMPRESSED`408409#### `stat.FILE_ATTRIBUTE_DEVICE`410411#### `stat.FILE_ATTRIBUTE_DIRECTORY`412413#### `stat.FILE_ATTRIBUTE_ENCRYPTED`414415#### `stat.FILE_ATTRIBUTE_HIDDEN`416417#### `stat.FILE_ATTRIBUTE_INTEGRITY_STREAM`418419#### `stat.FILE_ATTRIBUTE_NORMAL`420421#### `stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED`422423#### `stat.FILE_ATTRIBUTE_NO_SCRUB_DATA`424425#### `stat.FILE_ATTRIBUTE_OFFLINE`426427#### `stat.FILE_ATTRIBUTE_READONLY`428429#### `stat.FILE_ATTRIBUTE_REPARSE_POINT`430431#### `stat.FILE_ATTRIBUTE_SPARSE_FILE`432433#### `stat.FILE_ATTRIBUTE_SYSTEM`434435#### `stat.FILE_ATTRIBUTE_TEMPORARY`436437#### `stat.FILE_ATTRIBUTE_VIRTUAL`438439Добавлено в версии 3.5.440441В Windows для сравнения с членом `st_reparse_tag`, возвращаемым функцией [`os.lstat()`](https://python-all.ru/3.14/library/os.html#os.lstat), доступны следующие константы. Это общеизвестные константы, но список не является исчерпывающим.442443#### `stat.IO_REPARSE_TAG_SYMLINK`444445#### `stat.IO_REPARSE_TAG_MOUNT_POINT`446447#### `stat.IO_REPARSE_TAG_APPEXECLINK`448449Добавлено в версии 3.8.450