Модуль stat
определяет константы и функции для интерпретации результатов (объекта stat_result
) работы функций os.stat()
и os.lstat()
. Для получения полной информации о системных вызовах stat()
и lstat()
обратитесь к документации по используемой системе.
os.stat()
.os.ST_MODE
.mode
функции os.chmod()
.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
: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
.