stat
— Интерпретация результатов stat()
¶
Исходный код: Lib/stat.py
Модуль stat
определяет константы и функции для интерпретации результатов os.stat()
, os.fstat()
и os.lstat()
(если они существуют). Для получения более подробной информации о вызовах stat()
, fstat()
и lstat()
обратитесь к документации для вашей системы.
Изменено в версии 3.4: Модуль stat поддерживается реализацией на языке Си.
Модуль stat
определяет следующие функции для тестирования определенных типов файлов:
- stat.S_ISDIR(mode)¶
Возвращает ненулевое значение, если режим задан из каталога.
- stat.S_ISCHR(mode)¶
Возвращает ненулевое значение, если режим задан из файла специального символьного устройства.
- stat.S_ISBLK(mode)¶
Возвращает ненулевое значение, если режим задан из файла блочного специального устройства.
- stat.S_ISREG(mode)¶
Возвращает ненулевое значение, если режим взят из обычного файла.
- stat.S_ISFIFO(mode)¶
Возвращает ненулевое значение, если режим задан из FIFO (именованного канала).
- stat.S_ISLNK(mode)¶
Возвращает ненулевое значение, если режим задан по символьной ссылке.
- stat.S_ISSOCK(mode)¶
Возвращает ненулевое значение, если режим задан из сокета.
- stat.S_ISDOOR(mode)¶
Возвращает ненулевое значение, если режим задан от двери.
Добавлено в версии 3.4.
- stat.S_ISPORT(mode)¶
Возвращает ненулевое значение, если режим задан из порта события.
Добавлено в версии 3.4.
- stat.S_ISWHT(mode)¶
Возвращает ненулевое значение, если режим находится в режиме отключения.
Добавлено в версии 3.4.
Для более общего управления режимом файла определены две дополнительные функции:
- stat.S_IMODE(mode)¶
Возвращает ту часть режима файла, которую можно задать с помощью
os.chmod()
— то есть биты разрешений для файла, а также биты sticky, set-group-id и set-user-id (в системах, которые их поддерживают).
- stat.S_IFMT(mode)¶
Возвращает часть режима файла, которая описывает тип файла (используется функциями
S_IS*()
, описанными выше).
Обычно вы используете функции os.path.is*()
для проверки типа файла; приведенные здесь функции полезны, когда вы выполняете несколько тестов одного и того же файла и хотите избежать накладных расходов, связанных с системным вызовом stat()
для каждого теста. Они также полезны при проверке информации о файле, который не обрабатывается os.path
, например, при тестировании блочных и символьных устройств.
Пример:
import os, sys
from stat import *
def walktree(top, callback):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.lstat(pathname).st_mode
if S_ISDIR(mode):
# It's a directory, recurse into it
walktree(pathname, callback)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname)
else:
# Unknown file type, print a message
print('Skipping %s' % pathname)
def visitfile(file):
print('visiting', file)
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
Предусмотрена дополнительная служебная функция для преобразования режима файла в удобочитаемую строку:
- stat.filemode(mode)¶
Преобразуйте режим файла в строку вида „-rwxrwxrwx“.
Добавлено в версии 3.3.
Все переменные, приведенные ниже, являются просто символическими индексами в кортеже из 10 элементов, возвращаемом с помощью os.stat()
, os.fstat()
или os.lstat()
.
- stat.ST_MODE¶
Режим защиты индексных дескрипторов.
- stat.ST_INO¶
Идентификационный номер.
- stat.ST_DEV¶
Индексный индекс устройства находится включенным.
- stat.ST_NLINK¶
Количество ссылок на индексный индекс.
- stat.ST_UID¶
Идентификатор пользователя владельца.
- stat.ST_GID¶
Идентификатор группы владельца.
- stat.ST_SIZE¶
Размер обычного файла в байтах; объем данных, ожидающих в некоторых специальных файлах.
- stat.ST_ATIME¶
Время последнего доступа.
- stat.ST_MTIME¶
Время последнего изменения.
- stat.ST_CTIME¶
«ctime», о котором сообщает операционная система. В некоторых системах (например, Unix) это время последнего изменения метаданных, а в других (например, Windows) - время создания (подробности см. в документации по платформе).
Интерпретация термина «размер файла» меняется в зависимости от типа файла. Для обычных файлов это размер файла в байтах. Для FIFO и сокетов в большинстве версий Unix (в частности, в Linux) «размер» - это количество байт, ожидающих чтения во время вызова функции os.stat()
, os.fstat()
, или os.lstat()
; иногда это может быть полезно, особенно для опроса одного из этих специальных файлов после неблокирующего открытия. Значение поля size для других символьных и блочных устройств отличается больше, в зависимости от реализации базового системного вызова.
Приведенные ниже переменные определяют флаги, используемые в поле ST_MODE
.
Использование вышеприведенных функций более переносимо, чем использование первого набора флагов:
- stat.S_IFSOCK¶
Разъем.
- stat.S_IFLNK¶
Символическая ссылка.
- stat.S_IFREG¶
Обычный файл.
- stat.S_IFBLK¶
Блочное устройство.
- stat.S_IFDIR¶
Каталог.
- stat.S_IFCHR¶
Символьное устройство.
- stat.S_IFIFO¶
FIFO.
- stat.S_IFDOOR¶
Дверь.
Добавлено в версии 3.4.
- stat.S_IFPORT¶
Порт события.
Добавлено в версии 3.4.
- stat.S_IFWHT¶
Белое пятно.
Добавлено в версии 3.4.
Примечание
S_IFDOOR
, S_IFPORT
или S_IFWHT
определяются как 0, если платформа не поддерживает эти типы файлов.
Следующие флаги также могут быть использованы в аргументе mode параметра os.chmod()
:
- stat.S_ISUID¶
Бит SetUID.
- stat.S_ISGID¶
Бит Set-group-ID. Этот бит имеет несколько специальных применений. Для каталога это указывает на то, что для этого каталога должна использоваться семантика BSD: файлы, созданные там, наследуют свой идентификатор группы из каталога, а не из эффективного идентификатора группы в процессе создания, и каталоги, созданные там, также получат набор битов
S_ISGID
. Для файла, для которого не установлен бит группового выполнения (S_IXGRP
), бит set-group-ID указывает на обязательную блокировку файла/записи (смотрите такжеS_ENFMT
).
- stat.S_ISVTX¶
Фиксированный бит. Когда этот бит установлен для каталога, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.
- stat.S_IRWXU¶
Маска для прав доступа владельца файла.
- stat.S_IRUSR¶
У владельца есть разрешение на чтение.
- stat.S_IWUSR¶
У владельца есть разрешение на запись.
- stat.S_IXUSR¶
У владельца есть разрешение на выполнение.
- stat.S_IRWXG¶
Маска для групповых разрешений.
- stat.S_IRGRP¶
У группы есть разрешение на чтение.
- stat.S_IWGRP¶
У группы есть разрешение на запись.
- stat.S_IXGRP¶
У группы есть разрешение на выполнение.
- stat.S_IRWXO¶
Маска для получения разрешений для других пользователей (не входящих в группу).
- stat.S_IROTH¶
У других есть разрешение на чтение.
- stat.S_IWOTH¶
У других есть разрешение на запись.
- stat.S_IXOTH¶
У других есть разрешение на выполнение.
- stat.S_ENFMT¶
Принудительная блокировка файлов System V. Этот флаг используется совместно с
S_ISGID
: блокировка файлов/записей применяется к файлам, для которых не установлен бит группового выполнения (S_IXGRP
).
В аргументе flags параметра os.chflags()
могут использоваться следующие флаги:
- stat.UF_NODUMP¶
Не удаляйте файл из хранилища.
- stat.UF_IMMUTABLE¶
Файл не может быть изменен.
- stat.UF_APPEND¶
Файл может быть только добавлен к нему.
- stat.UF_OPAQUE¶
Каталог непрозрачен при просмотре через объединенный стек.
- stat.UF_NOUNLINK¶
Файл не может быть переименован или удален.
- stat.UF_COMPRESSED¶
Файл хранится в сжатом виде (mac OS 10.6+).
- stat.UF_HIDDEN¶
Файл не должен отображаться в графическом интерфейсе (macOS 10.5+).
- stat.SF_ARCHIVED¶
Файл может быть заархивирован.
- stat.SF_IMMUTABLE¶
Файл не может быть изменен.
- stat.SF_APPEND¶
Файл может быть только добавлен к нему.
- stat.SF_NOUNLINK¶
Файл не может быть переименован или удален.
- stat.SF_SNAPSHOT¶
Этот файл представляет собой файл моментального снимка.
Смотрите справочную страницу по системам BSD или macOS chflags(2) для получения дополнительной информации.
В Windows доступны следующие константы атрибутов файла для использования при проверке битов в элементе st_file_attributes
, возвращаемом os.stat()
. Более подробную информацию о значении этих констант смотрите в Windows API documentation.
- stat.FILE_ATTRIBUTE_ARCHIVE¶
- stat.FILE_ATTRIBUTE_COMPRESSED¶
- stat.FILE_ATTRIBUTE_DEVICE¶
- stat.FILE_ATTRIBUTE_DIRECTORY¶
- stat.FILE_ATTRIBUTE_ENCRYPTED¶
- stat.FILE_ATTRIBUTE_HIDDEN¶
- stat.FILE_ATTRIBUTE_INTEGRITY_STREAM¶
- stat.FILE_ATTRIBUTE_NORMAL¶
- stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED¶
- stat.FILE_ATTRIBUTE_NO_SCRUB_DATA¶
- stat.FILE_ATTRIBUTE_OFFLINE¶
- stat.FILE_ATTRIBUTE_READONLY¶
- stat.FILE_ATTRIBUTE_REPARSE_POINT¶
- stat.FILE_ATTRIBUTE_SPARSE_FILE¶
- stat.FILE_ATTRIBUTE_SYSTEM¶
- stat.FILE_ATTRIBUTE_TEMPORARY¶
- stat.FILE_ATTRIBUTE_VIRTUAL¶
Добавлено в версии 3.5.
В Windows доступны следующие константы для сравнения с элементом st_reparse_tag
, возвращаемым параметром os.lstat()
. Это хорошо известные константы, но их список не является исчерпывающим.