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

Объект stat_result в Python, результаты выполнения os.stat().

Получение результатов вызова os.stat().

Синтаксис:

import os

os.stat_result

stat_info = os.stat(...)

Описание:

Объект stat_result модуля os имеет атрибуты, которые примерно соответствуют членам структуры системного вызова stat. Объект os.stat_result является результатом выполнения таких функций, как os.stat(), os.fstat() и `os.lstat()'.

Для обратной совместимости экземпляр os.stat_result также доступен в виде кортежа из не менее 10 целых чисел, дающих наиболее важные и переносимые члены структуры stat, в следующем порядке: st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. В конце некоторых реализаций может быть добавлено больше элементов. Для совместимости со старыми версиями Python доступ к stat_result в виде кортежа всегда возвращает целые числа.

Стандартный модуль stat определяет функции и константы, которые полезны для извлечения информации из структуры системного вызова stat. В Windows некоторые элементы заполнены фиктивными значениями.

Атрибуты объекта os.stat_result:

stat_info.st_mode:

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

stat_info.st_ino:

Зависит от платформы, но если не ноль, однозначно идентифицирует файл для данного значения st_dev.

Как правило:

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

stat_info.st_dev:

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

stat_info.st_nlink:

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

stat_info.st_uid:

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

stat_info.st_gid:

Групповой идентификатор владельца файла.

stat_info.st_size:

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

Отметки времени timestamp:

stat_info.st_atime:

Время последнего доступа, выраженное в секундах.

stat_info.st_mtime:

Время последней модификации контента, выраженное в секундах.

stat_info.st_ctime:

Зависимость от платформы:

  • время последнего изменения метаданных в Unix,
  • время создания в Windows, выраженное в секундах.

stat_info.st_atime_ns:

Время последнего доступа, выраженное в наносекундах как целое число.

stat_info.st_mtime_ns:

Время последней модификации контента, выраженное в наносекундах как целое число.

stat_info.st_ctime_ns:

Зависимость от платформы:

  • время последнего изменения метаданных в Unix,
  • время создания в Windows, выраженное в наносекундах как целое число.

Обратите внимание, что точное значение и разрешение атрибутов st_atime, st_mtime и st_ctime зависят от операционной системы и файловой системы. Например в системах Windows, использующих файловые системы FAT или FAT32, разрешение st_mtime составляет 2 секунды, а разрешение st_atime только 1 день. Дополнительные сведения смотрите в документации по операционной системе.

Аналогично st_time_ns, st_mtime_ns и st_ctime_ns всегда выражаются в наносекундах, многие системы не обеспечивают наносекундной точности. В системах, которые действительно обеспечивают наносекундную точность, объект с плавающей точкой, используемый для хранения st_atime, st_mtime и st_ctime не может сохранить все это и поэтому будет немного неточным. Если вам нужны точные временные метки, вы всегда должны использовать st_time_ns, st_mtime_ns и st_ctime_ns.

В некоторых системах Unix, например Linux, доступны атрибуты:

stat_info.st_blocks:

Количество 512-байтовых блоков, выделенных для файла. Это может быть меньше, чем st_size/512, когда файл имеет ошибки.

stat_info.st_blksize:

Предпочтительный размер блока для эффективного ввода/вывода файловой системы. Запись в файл небольшими порциями может привести к неэффективному чтению/изменению/перезаписи.

stat_info.st_rdev:

Тип устройства, если устройство inode.

stat_info.st_flags:

Пользовательские флаги для файла.

В других системах Unix, таких как FreeBSD, доступны атрибуты пользователю root:

stat_info.st_gen:

Номер генерации файла.

stat_info.st_birthtime:

Время создания файла.

В Solaris и производных от него доступны атрибуты:

stat_info.st_fstype:

Строка, которая однозначно определяет тип файловой системы, в которой находится файл.

_В системах Mac OS доступны атрибуты:

stat_info.st_rsize:

Реальный размер файла.

stat_info.st_creator:

Создатель файла.

stat_info.st_type:

Тип файла.

В системах Windows доступны атрибуты:

stat_info.st_file_attributes:

Атрибуты файла Windows: dwFileAttributes член структуры BY_HANDLE_FILE_INFORMATION, возвращаемой функцией GetFileInformationByHandle(). Смотрите константы FILE_ATTRIBUTE_* в модуле статистики.

stat_info.st_reparse_tag:

Когда st_file_attributes имеет установленный FILE_ATTRIBUTE_REPARSE_POINT, это поле содержит тег, идентифицирующий тип точки повторной обработки. Смотрите константы IO_REPARSE_TAG_* в модуле статистики.

Примеры получения результатов из объекта stat_result:

import os
import time

filename = 'stat_result.py'
stat_info = os.stat(filename)

print(f'os.stat({filename}):)
print('  Size:', stat_info.st_size)
print('  Permissions:', oct(stat_info.st_mode))
print('  Owner:', stat_info.st_uid)
print('  Device:', stat_info.st_dev)
print('  Created      :', time.ctime(stat_info.st_ctime))
print('  Last modified:', time.ctime(stat_info.st_mtime))
print('  Last accessed:', time.ctime(stat_info.st_atime))

# os.stat(stat_result.py):
#   Size: 593
#   Permissions: 0o100644
#   Owner: 527
#   Device: 16777218
#   Created      : Wen Mar 18 12:09:51 2020
#   Last modified: Wen Mar 18 12:09:51 2020
#   Last accessed: Wen Mar 18 12:33:19 2020