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

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

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

Модуль stat определяет константы и функции для интерпретации результатов (объекта stat_resul) работы функций 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.