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 bit), 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):
'''рекурсивно спуститься в дерево каталогов с корнем сверху,
вызов функции обратного вызова для каждого обычного файла'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.stat(pathname).st_mode
if S_ISDIR(mode):
# Это каталог, рекурсия в него
walktree(pathname, callback)
elif S_ISREG(mode):
# Это файл, вызовем функцию обратного вызова
callback(pathname)
else:
# Неизвестный тип файла, печать сообщения
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
¶ Режим защиты Inode.
-
stat.
ST_INO
¶ Номер Inode.
-
stat.
ST_DEV
¶ Inode устройства находится в.
-
stat.
ST_NLINK
¶ Количество ссылок на inode.
-
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()
;
иногда это может быть полезно, особенно для опроса одного из этих специальных
файлов после неблокирующего открытия. Значение поля размера для других
символ и блочных устройств больше варьируется в зависимости от реализации
базового системного вызова.
Приведенные ниже переменные определяют флаги, используемый в поле 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
¶ Установить бит ID (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 X 10.6 +).
-
stat.
UF_HIDDEN
¶ Файл не должен отображаться в графическом интерфейсе пользователя (Mac OS X 10.5+).
-
stat.
SF_ARCHIVED
¶ Файл может быть архивирован.
-
stat.
SF_IMMUTABLE
¶ Файл не может быть изменен.
-
stat.
SF_APPEND
¶ Файл может быть добавлен только в.
-
stat.
SF_NOUNLINK
¶ Файл не может быть переименован или удален.
-
stat.
SF_SNAPSHOT
¶ Файл является файлом моментального снимка.
Дополнительные сведения см. на справочной странице* BSD или Mac OS chflags(2).
В Windows следующие константы атрибут файлов доступны для использования при
тестировании битов в элементе st_file_attributes
возвращенный по os.stat()
.
Дополнительные сведения о значении этих констант см. в Документация по API Windows.
-
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()
. Это хорошо известные константы, но не исчерпывающий
список.