Документация Python неофициальный перевод

stat.md

324 строк · 13.1 КБ · обычная страница · сырой текст · скачать

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