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

stat.md

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

1> **Источник:** https://python-all.ru/3.0/library/stat.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `stat` – интерпретация результатов `stat()`89Модуль `stat` определяет константы и функции для интерпретации результатов [`os.stat()`](https://python-all.ru/3.0/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.0/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.0/library/os.html#os.lstat) (если они существуют). Подробные сведения о вызовах `stat`, `fstat` и `lstat` можно найти в документации вашей системы.1011Модуль `stat` определяет следующие функции для проверки конкретных типов файлов:1213#### `[stat.S_ISDIR]stat.S_ISDIR(mode)`1415Возвращает ненулевое значение, если режим соответствует каталогу.1617#### `[stat.S_ISCHR]stat.S_ISCHR(mode)`1819Возвращает ненулевое значение, если режим соответствует файлу символьного устройства.2021#### `[stat.S_ISBLK]stat.S_ISBLK(mode)`2223Возвращает ненулевое значение, если режим соответствует файлу блочного устройства.2425#### `[stat.S_ISREG]stat.S_ISREG(mode)`2627Возвращает ненулевое значение, если режим соответствует обычному файлу.2829#### `[stat.S_ISFIFO]stat.S_ISFIFO(mode)`3031Возвращает ненулевое значение, если режим соответствует FIFO (именованному каналу).3233#### `[stat.S_ISLNK]stat.S_ISLNK(mode)`3435Возвращает ненулевое значение, если режим соответствует символической ссылке.3637#### `[stat.S_ISSOCK]stat.S_ISSOCK(mode)`3839Возвращает ненулевое значение, если режим соответствует сокету.4041Определены ещё две функции для более общей работы с режимом файла:4243#### `[stat.S_IMODE]stat.S_IMODE(mode)`4445Возвращает часть режима файла, которая может быть установлена с помощью4647[`os.chmod()`](https://python-all.ru/3.0/library/os.html#os.chmod)4849– то есть биты разрешений файла, а также биты sticky, set-group-id и set-user-id (в системах, которые их поддерживают).5051#### `[stat.S_IFMT]stat.S_IFMT(mode)`5253Возвращает часть режима файла, которая описывает тип файла (используется функциями5455`S_IS*()`5657выше).5859Обычно для проверки типа файла используются функции `os.path.is*()`; функции из этого модуля полезны, когда нужно выполнить несколько проверок одного и того же файла и избежать издержек системного вызова `stat` для каждой проверки. Они также пригодятся при проверке информации о файле, которая не обрабатывается модулем [`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path), например, для проверки блочных и символьных устройств.6061Все приведённые ниже переменные – это просто символические индексы в 10-кортеже, возвращаемом [`os.stat()`](https://python-all.ru/3.0/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.0/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.0/library/os.html#os.lstat).6263#### `[stat.ST_MODE]stat.ST_MODE`6465Режим защиты inode.6667#### `[stat.ST_INO]stat.ST_INO`6869Номер inode.7071#### `[stat.ST_DEV]stat.ST_DEV`7273Устройство, на котором находится inode.7475#### `[stat.ST_NLINK]stat.ST_NLINK`7677Количество ссылок на inode.7879#### `[stat.ST_UID]stat.ST_UID`8081Идентификатор пользователя владельца.8283#### `[stat.ST_GID]stat.ST_GID`8485Идентификатор группы владельца.8687#### `[stat.ST_SIZE]stat.ST_SIZE`8889Размер обычного файла в байтах; количество данных, ожидающих чтения на некоторых специальных файлах.9091#### `[stat.ST_ATIME]stat.ST_ATIME`9293Время последнего доступа.9495#### `[stat.ST_MTIME]stat.ST_MTIME`9697Время последнего изменения.9899#### `[stat.ST_CTIME]stat.ST_CTIME`100101«ctime» в том виде, в котором он сообщается операционной системой. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) – время создания (подробнее см. документацию платформы).102103Интерпретация «размера файла» меняется в зависимости от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO (именованных каналов) и сокетов в большинстве вариантов Unix (включая Linux) «размер» – это количество байтов, ожидающих чтения на момент вызова [`os.stat()`](https://python-all.ru/3.0/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.0/library/os.html#os.fstat) или [`os.lstat()`](https://python-all.ru/3.0/library/os.html#os.lstat); это может быть полезно, например, для опроса одного из этих специальных файлов после неблокирующего открытия. Значение поля размера для других символьных и блочных устройств сильно варьируется в зависимости от реализации базового системного вызова.104105Пример:106107```python108import os, sys109from stat import *110111def walktree(top, callback):112    '''recursively descend the directory tree rooted at top,113       calling the callback function for each regular file'''114115    for f in os.listdir(top):116        pathname = os.path.join(top, f)117        mode = os.stat(pathname)[ST_MODE]118        if S_ISDIR(mode):119            # It's a directory, recurse into it120            walktree(pathname, callback)121        elif S_ISREG(mode):122            # It's a file, call the callback function123            callback(pathname)124        else:125            # Unknown file type, print a message126            print('Skipping %s' % pathname)127128def visitfile(file):129    print('visiting', file)130131if __name__ == '__main__':132    walktree(sys.argv[1], visitfile)133```134