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)

Возвращает ненулевое значение, если режим задан от двери.

Added in version 3.4.

stat.S_ISPORT(mode)

Возвращает ненулевое значение, если режим задан из порта событий.

Added in version 3.4.

stat.S_ISWHT(mode)

Возвращайте ненулевое значение, если режим был выбран из белых пятен.

Added in version 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“.

Added in version 3.3.

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

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

stat.ST_MODE

Режим защиты инодов.

stat.ST_INO

Номер инода.

stat.ST_DEV

Устройство, на котором находится инод.

Количество ссылок на инод.

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

Дверь.

Added in version 3.4.

stat.S_IFPORT

Порт событий.

Added in version 3.4.

stat.S_IFWHT

Уайт-аут.

Added in version 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).

stat.S_IREAD

Синоним S_IRUSR в Unix V7.

stat.S_IWRITE

Синоним S_IWUSR в Unix V7.

stat.S_IEXEC

Синоним S_IXUSR в Unix V7.

Следующие флаги могут быть использованы в аргументе flags команды os.chflags():

stat.UF_SETTABLE

Все настраиваемые пользователем флаги.

Added in version 3.13.

stat.UF_NODUMP

Не сбрасывайте файл.

stat.UF_IMMUTABLE

Файл не может быть изменен.

stat.UF_APPEND

Файл может быть только дополнен.

stat.UF_OPAQUE

Каталог непрозрачен при просмотре через стек объединения.

Файл нельзя переименовывать или удалять.

stat.UF_COMPRESSED

Файл хранится в сжатом виде (macOS 10.6+).

stat.UF_TRACKED

Используется для работы с идентификаторами документов (macOS)

Added in version 3.13.

stat.UF_DATAVAULT

Файлу требуется право на чтение или запись (macOS 10.13+)

Added in version 3.13.

stat.UF_HIDDEN

Файл не должен отображаться в графическом интерфейсе (macOS 10.5+).

stat.SF_SETTABLE

Все флаги, изменяемые суперпользователем

Added in version 3.13.

stat.SF_SUPPORTED

Все флаги, поддерживаемые суперпользователем

Availability: macOS

Added in version 3.13.

stat.SF_SYNTHETIC

Все синтетические флаги суперпользователя, доступные только для чтения

Availability: macOS

Added in version 3.13.

stat.SF_ARCHIVED

Файл может быть заархивирован.

stat.SF_IMMUTABLE

Файл не может быть изменен.

stat.SF_APPEND

Файл может быть только дополнен.

stat.SF_RESTRICTED

Файлу требуется право на запись (macOS 10.13+)

Added in version 3.13.

Файл нельзя переименовывать или удалять.

stat.SF_SNAPSHOT

Файл является файлом моментального снимка.

Файл представляет собой твердую ссылку (macOS 10.15+)

Added in version 3.13.

stat.SF_DATALESS

Файл является объектом без данных (macOS 10.15+)

Added in version 3.13.

Дополнительные сведения см. на странице руководства *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

Added in version 3.5.

В Windows для сравнения с членом st_reparse_tag, возвращаемым os.lstat(), доступны следующие константы. Это хорошо известные константы, но их список не является исчерпывающим.

stat.IO_REPARSE_TAG_MOUNT_POINT

Added in version 3.8.