Константы и функции для интерпретации результатов функций 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
:
stat.S_IWRITE
:
stat.S_IEXEC
: