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()— это биты разрешений файла, плюс бит «приклеивания», биты «установленный группой» и «установленный пользователем» (на системах, которые их поддерживают).
-
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.stat(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 -
Режим защиты 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 -
Бит установки GID. Этот бит имеет несколько специальных применений. Для каталога он указывает, что должны использоваться семантика BSD для этого каталога: файлы, созданные в нём, наследуют идентификатор группы от каталога, а не от эффективного идентификатора группы создающего процесса, и каталоги, созданные в нём, также получат бит
S_ISGID. Для файла, у которого не установлен бит выполнения группой (S_IXGRP), бит установки GID указывает на обязательное блокирование файлов/записей (см. также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).
-
stat.S_IREAD -
Синоним Unix V7 для
S_IRUSR.
-
stat.S_IWRITE -
Синоним Unix V7 для
S_IWUSR.
-
stat.S_IEXEC -
Синоним Unix V7 для
S_IXUSR.
Следующие флаги могут быть использованы в аргументе 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(). Это известные константы, но не исчерпывающий список.
-
stat.IO_REPARSE_TAG_SYMLINK -
stat.IO_REPARSE_TAG_MOUNT_POINT -
stat.IO_REPARSE_TAG_APPEXECLINK -
Добавлена в версии 3.8.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/stat.html