stat
— Интерпретация результатов stat()
¶
Источник: Lib/stat.py
Модуль stat
определяет константы и функции для интерпретации результатов вызовов os.stat()
, os.fstat()
и os.lstat()
(если они существуют). Для получения подробной информации о вызовах stat()
, fstat()
и lstat()
обратитесь к документации по вашей системе.
Изменено в версии 3.4: Модуль stat поддерживается реализацией на языке C.
Модуль 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)¶
Возвращает ненулевое значение, если режим задан от двери.
Added in version 3.4.
- stat.S_ISPORT(mode)¶
Возвращает ненулевое значение, если режим задан из порта событий.
Added in version 3.4.
- stat.S_ISWHT(mode)¶
Возвращайте ненулевое значение, если режим был выбран из белых пятен.
Added in version 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“.
Added in version 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¶
Дверь.
Added in version 3.4.
- stat.S_IFPORT¶
Порт событий.
Added in version 3.4.
- stat.S_IFWHT¶
Уайт-аут.
Added in version 3.4.
Примечание
S_IFDOOR
, S_IFPORT
или S_IFWHT
определяются как 0, если платформа не поддерживает данные типы файлов.
Следующие флаги также могут быть использованы в аргументе mode в os.chmod()
:
- stat.S_ISUID¶
Установите бит UID.
- stat.S_ISGID¶
Бит Set-group-ID. Этот бит имеет несколько специальных назначений. Для каталога он указывает, что для этого каталога будет использоваться семантика BSD: файлы, созданные в нем, наследуют свой групповой идентификатор от каталога, а не от эффективного группового идентификатора создающего процесса, и каталоги, созданные в нем, также получат установленный бит
S_ISGID
. Для файла, у которого не установлен бит группового исполнения (S_IXGRP
), бит set-group-ID указывает на обязательную блокировку файла/записи (см. такжеS_ENFMT
).
- stat.S_ISVTX¶
Бит Sticky. Когда этот бит установлен в каталоге, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.
- 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_SETTABLE¶
Все настраиваемые пользователем флаги.
Added in version 3.13.
- stat.UF_NODUMP¶
Не сбрасывайте файл.
- stat.UF_IMMUTABLE¶
Файл не может быть изменен.
- stat.UF_APPEND¶
Файл может быть только дополнен.
- stat.UF_OPAQUE¶
Каталог непрозрачен при просмотре через стек объединения.
- stat.UF_NOUNLINK¶
Файл нельзя переименовывать или удалять.
- stat.UF_COMPRESSED¶
Файл хранится в сжатом виде (macOS 10.6+).
- stat.UF_TRACKED¶
Используется для работы с идентификаторами документов (macOS)
Added in version 3.13.
- stat.UF_DATAVAULT¶
Файлу требуется право на чтение или запись (macOS 10.13+)
Added in version 3.13.
- stat.UF_HIDDEN¶
Файл не должен отображаться в графическом интерфейсе (macOS 10.5+).
- stat.SF_SETTABLE¶
Все флаги, изменяемые суперпользователем
Added in version 3.13.
- stat.SF_SUPPORTED¶
Все флаги, поддерживаемые суперпользователем
Availability: macOS
Added in version 3.13.
- stat.SF_SYNTHETIC¶
Все синтетические флаги суперпользователя, доступные только для чтения
Availability: macOS
Added in version 3.13.
- stat.SF_ARCHIVED¶
Файл может быть заархивирован.
- stat.SF_IMMUTABLE¶
Файл не может быть изменен.
- stat.SF_APPEND¶
Файл может быть только дополнен.
- stat.SF_RESTRICTED¶
Файлу требуется право на запись (macOS 10.13+)
Added in version 3.13.
- stat.SF_NOUNLINK¶
Файл нельзя переименовывать или удалять.
- stat.SF_SNAPSHOT¶
Файл является файлом моментального снимка.
- stat.SF_FIRMLINK¶
Файл представляет собой твердую ссылку (macOS 10.15+)
Added in version 3.13.
- stat.SF_DATALESS¶
Файл является объектом без данных (macOS 10.15+)
Added in version 3.13.
Дополнительные сведения см. на странице руководства *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¶
Added in version 3.5.
В Windows для сравнения с членом st_reparse_tag
, возвращаемым os.lstat()
, доступны следующие константы. Это хорошо известные константы, но их список не является исчерпывающим.