Сообщить об ошибке.

Модуль stat в Python, извлечение информации из stat_result

Константы и функции для интерпретации результатов функций os.stat()

Модуль stat определяет константы и функции для интерпретации результатов (объекта stat_result) работы функций os.stat() и os.lstat(). Для получения полной информации о системных вызовах stat() и lstat() обратитесь к документации по используемой системе.

Содержание:

Определение типа пути в файловой системы:

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 вернул сокет (socket).

stat.S_ISDOOR(mode):

Вернет не нулевое значение, если mode вернул door.

stat.S_ISPORT(mode):

Вернет не нулевое значение, если mode вернул порт(port).

stat.S_ISWHT(mode):

Вернет не нулевое значение, если mode из-за отключения.

Функции для общих манипуляций с режимом файла:

stat.S_IMODE(mode):

Возвращает часть режима mode файла, которую можно установить с помощью функции os.chmod(), то есть биты разрешения файла, а также биты закрепления, set-group-id и set-user-id в системах, которые их поддерживают.

stat.S_IFMT(mode):

Возвращает часть режима mode файла, которая описывает тип файла, которые используется функциями os.S_IS*() выше.

Обычно функции os.path.is*() используются для проверки типа файла. Функции, представленные здесь полезны, когда выполняется несколько тестов одного и того же файла и необходимо избежать затрат на системный вызов os.stat() для каждого теста. Они также полезны при проверке информации о файле, которая не обрабатывается модулем os.path, например при тестировании блочных и символьных устройств.

stat.filemode(mode):

Преобразует режим файла в читаемую человеком строку вида -rwxrwxrwx.

Примеры использования:

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)

Символические индексы элементов кортежа возвращаемый функциями os.stat() и os.lstat().

stat.ST_MODE:

Режим файла: биты типа файла и разрешения файла

stat.ST_INO:

Как правило:

номер inode в Unix,индекс файла в Windows

stat.ST_DEV:

Идентификатор устройства, на котором находится этот файл.

stat.ST_NLINK:

Количество жестких ссылок.

stat.ST_UID:

Идентификатор пользователя владельца.

stat.ST_GID:

Идентификатор группы владельца.

stat.ST_SIZE:

Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки - это длина имени пути, которое он содержит, без завершающего нулевого байта.

Интерпретация размера файла изменяется в зависимости от типа файла. Для простых файлов это размер файла в байтах. Для FIFOs и гнездами под большинстве разновидностей Unix (включая Linux , в частности), "размер" это число байт , ожидающих быть считаны в момент вызова os.stat() и os.lstat(). Иногда это может быть полезно, особенно для опроса одного из этих специальных файлов после неблокирующего открытия. Значение поля размера для других символьных и блочных устройств различается в зависимости от реализации базового системного вызова.

stat.ST_ATIME:

Время последнего доступа.

stat.ST_MTIME:

Время последней модификации.

stat.ST_CTIME:
  • В Unix это время последнего изменения метаданных файла.
  • В Windows - время создания файла.

Флаги, используемые в поле stat.ST_MODE.

  • stat.S_IFSOCK - Socket.
  • stat.S_IFLNK - Symbolic link.
  • stat.S_IFREG - Regular file.
  • stat.S_IFBLK - Block device.
  • stat.S_IFDIR - Directory.
  • stat.S_IFCHR - Character device.
  • stat.S_IFIFO - FIFO.
  • stat.S_IFDOOR - Door.
  • stat.S_IFPORT - Event port.
  • stat.S_IFWHT - Whiteout.

Заметка: os.S_IFDOOR, os.S_IFPORT или os.S_IFWHT определены как 0, когда платформа не имеет поддержки для типов файлов.

Флаги используемые в аргументе mode функции os.chmod():

stat.S_ISUID:

Устанавливает бит идентификатора пользователя.

stat.S_ISGID:

Устанавливает бит идентификатора группы. Этот бит имеет несколько специальных применений:

  • Для каталога это означает, что файлы наследуют идентификатор своей группы из каталога, а не от эффективного идентификатора группы процесса создания, и созданные там каталоги также получат установленный бит stat.S_ISGID.
  • Для файла, который не имеет установленного бита выполнения группы stat.S_IXGRP, бит set-group-ID указывает на обязательную блокировку файла/записей (смотрите также stat.S_ENFMT).
stat.:

Липкий бит. Когда этот бит установлен в каталоге, это означает, что файл в этом каталоге может быть переименован или удален только владельцем файла, владельцем каталога или привилегированным процессом.

stat.S_IRWXU:

Маска устанавливает для пользователя права rwx.

stat.S_IRUSR:

Владелец имеет разрешение на чтение.

stat.S_IWUSR:

Владелец имеет разрешение на запись.

stat.S_IXUSR:

Владелец имеет разрешение на исполнение.

stat.S_IRWXG:

Маска устанавливает для группы права rwx.

stat.S_IRGRP:

Группа имеет разрешение на чтение.

stat.S_IWGRP:

Группа имеет разрешение на запись.

stat.S_IXGRP:

Группа имеет разрешение на исполнение.

stat.S_IRWXO:

Маска устанавливает для других (не в группе) права rwx.

stat.S_IROTH:

Другие имеет разрешение на чтение.

stat.S_IWOTH:

Другие имеет разрешение на запись.

stat.S_IXOTH:

Другие имеет разрешение на исполнение.

stat.S_ENFMT:

Система V принудительно блокирует файлы. Этот флаг используется совместно с stat.S_ISGID: блокировка файлов/записей применяется к файлам, для которых не установлен бит выполнения группы stat.S_IXGRP,

stat.S_IREAD:

Unix V7 синоним для stat.S_IRUSR.

stat.S_IWRITE:

Unix V7 синоним для stat.S_IWUSR.

stat.S_IEXEC:

Unix V7 синоним для stat.S_IXUSR.