stat
— Интерпретация результатов stat()
¶
Модуль stat
определяет константы и функции для интерпретации результатов
os.stat()
, os.fstat()
и os.lstat()
(если они существуют).
Полную информацию о вызовах stat()
, fstat()
и lstat()
см. в документации по вашей системе.
Изменено в версии 3.4: Модуль stat поддерживается C реализацией.
Модуль stat
определяет следующие функции для проверки определённых типов
файлов:
-
stat.
S_ISDIR
(mode)¶ Возвращает ненулевое значение, если mode находится в каталоге.
-
stat.
S_ISCHR
(mode)¶ Возвращает ненулевое значение, если mode взят из символьного файла специального устройства.
-
stat.
S_ISBLK
(mode)¶ Возвращает ненулевое значение, если mode взят из файла блочного специального устройства.
-
stat.
S_ISREG
(mode)¶ Возвращает ненулевое значение, если mode из обычного файла.
-
stat.
S_ISFIFO
(mode)¶ Возвращает ненулевое значение, если используется mode FIFO (именованный канал).
-
stat.
S_ISLNK
(mode)¶ Возвращает ненулевое значение, если mode является символической ссылкой.
-
stat.
S_ISSOCK
(mode)¶ Возвращает ненулевое значение, если mode исходит из сокета.
-
stat.
S_ISDOOR
(mode)¶ Возвращает ненулевое значение, если mode исходит от двери.
Добавлено в версии 3.4.
-
stat.
S_ISPORT
(mode)¶ Возвращает ненулевое значение, если mode исходит от порта событий.
Добавлено в версии 3.4.
-
stat.
S_ISWHT
(mode)¶ Возвращает ненулевое значение, если mode из белого тумана.
Добавлено в версии 3.4.
Определены две дополнительные функции для более общего управления mode файла:
-
stat.
S_IMODE
(mode)¶ Возвращает часть mode файла, устанавливаемая с помощью
os.chmod()
, т. е. биты прав доступа к файлу, а также sticky биты, set-group-id и set-user-id (в поддерживаемых системах).
-
stat.
S_IFMT
(mode)¶ Возвращает часть 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('Пропуская %s' % pathname)
def visitfile(file):
print('посещение', file)
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
Предоставляется дополнительная служебная функция для преобразования mode файла в удобочитаемую строку:
-
stat.
filemode
(mode)¶ Преобразование 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) «size» — это количество
байтов, ожидающих чтения во время вызова 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
¶ Липкий бит. Когда данный бит установлен для каталога, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.
-
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()
. Это хорошо известные
константы, но это не исчерпывающий список.