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)¶ Возвращает ненулевое значение, если режим из двери.
Добавлено в версии 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
¶ Установите бит 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_NODUMP
¶ Не сбрасывайте файл.
-
stat.
UF_IMMUTABLE
¶ Файл не может быть изменен.
-
stat.
UF_APPEND
¶ Файл может быть только дополнен.
-
stat.
UF_OPAQUE
¶ Каталог является непрозрачным при просмотре через стек объединения.
-
stat.
UF_NOUNLINK
¶ Файл не может быть переименован или удален.
-
stat.
UF_COMPRESSED
¶ Файл хранится в сжатом виде (macOS 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()
, доступны следующие константы. Это хорошо известные константы, но их список не является исчерпывающим.