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.

Изменено в версии 3.4: Функция поддерживает S_IFDOOR, S_IFPORT и S_IFWHT.

Все переменные ниже являются просто символическими индексами в 10-кортеж возвращенный по os.stat(), os.fstat() или os.lstat().

stat.ST_MODE

Режим защиты Inode.

stat.ST_INO

Номер Inode.

stat.ST_DEV

Inode устройства находится в.

Количество ссылок на 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).

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_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_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_MOUNT_POINT

Добавлено в версии 3.8.