import os stat_result = os.stat(...)
Объект stat_result
модуля os
имеет атрибуты, которые примерно соответствуют членам структуры системного вызова stat
. Объект os.stat_result
является результатом выполнения таких функций, как os.stat()
, os.fstat()
и os.lstat()
.
Стандартный модуль stat
определяет функции и константы, которые полезны для извлечения информации из структуры системного вызова stat
. В Windows некоторые элементы заполнены фиктивными значениями.
Для обеспечения обратной совместимости экземпляр
stat_result
также доступен в виде кортежа из 10 целых чисел, дающих наиболее важные (и переносимые) элементы структурыstat
в порядкеstat_result.st_mode
,stat_result.st_ino
,stat_result.st_dev
,stat_result.st_nlink
,stat_result.st_uid
,stat_result.st_gid
,stat_result.st_size
,stat_result.st_atime
,stat_result.st_mtime
,stat_result.st_ctime
. В некоторых реализациях в конце могут быть добавлены дополнительные элементы. Для совместимости со старыми версиями Python доступ кstat_result
в виде кортежа всегда возвращает целые числа.
os.stat_result
stat_result.st_mode
:Режим файла: биты типа файла и разрешения файла.
stat_result.st_ino
:Зависит от платформы, но если не ноль, однозначно идентифицирует файл для данного значения stat_result.st_dev
.
Как правило:
inode
в Unix,stat_result.st_dev
:Идентификатор устройства, на котором находится этот файл.
stat_result.st_nlink
:Количество жестких ссылок.
stat_result.st_uid
:Идентификатор пользователя владельца файла.
stat_result.st_gid
:Групповой идентификатор владельца файла.
stat_result.st_size
:Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки - это длина имени пути, которое он содержит, без завершающего нулевого байта.
timestamp
stat_result.st_atime
:Время последнего доступа, выраженное в секундах.
stat_result.st_mtime
:Время последней модификации контента, выраженное в секундах.
stat_result.st_ctime
:Зависимость от платформы:
Изменено в версии Python 3.12:
stat_result.st_ctime
устарел в Windows. С версии Python 3.12, для определения времени создания файла в OS Windows необходимо использоватьstat_result.st_birthtime
. В будущемstat_result.st_ctime
будет содержать время последнего изменения метаданных, как и для других платформ.
stat_result.st_atime_ns
:Время последнего доступа, выраженное в наносекундах как целое число.
stat_result.st_mtime_ns
:Время последней модификации контента, выраженное в наносекундах как целое число.
stat_result.st_ctime_ns
:Зависимость от платформы:
Изменено в версии Python 3.12:
stat_result.st_ctime_ns
устарел в OS Windows. С версии Python 3.12, для определения времени создания файла в OS Windows необходимо использоватьstat_result.st_birthtime_ns
. В будущемstat_result.st_ctime_ns
будет содержать время последнего изменения метаданных, как и для других платформ.
stat_result.st_birthtime
:Время создания файла выражается в секундах. Этот атрибут не всегда доступен и может вызвать ошибку AttributeError
.
Изменено в версии Python 3.12: атрибут
stat_result.st_birthtime
теперь доступен в Windows.
stat_result.st_birthtime_ns
:Новое в версии Python 3.12.
Время создания файла выражается в наносекундах целым числом. Этот атрибут не всегда доступен и может вызвать ошибку AttributeError
.
Обратите внимание, что точное значение и разрешение атрибутов stat_result.st_atime
, stat_result.st_mtime
, stat_result.st_ctime
и stat_result.st_birthtime
зависят от операционной системы и файловой системы. Например в системах Windows, использующих файловые системы FAT
или FAT32
, разрешение stat_result.st_mtime
составляет 2 секунды, а разрешение stat_result.st_atime
только 1 день. Дополнительные сведения смотрите в документации по операционной системе.
Аналогично stat_result.st_atime_ns
, stat_result.st_mtime_ns
, stat_result.st_ctime_ns
и stat_result.st_birthtime_ns
всегда выражаются в наносекундах, многие системы не обеспечивают наносекундной точности. В системах, которые действительно обеспечивают наносекундную точность, объект float
, используемый для хранения stat_result.st_atime
, stat_result.st_mtime
, stat_result.st_ctime
и stat_result.st_birthtime
не может сохранить все это и следовательно будет немного неточным. Если необходимы точные временные метки, то всегда нужно использовать stat_result.st_atime_ns
, stat_result.st_mtime_ns
, stat_result.st_ctime_ns
и stat_result.st_birthtime_ns
.
stat_result.st_blocks
:Количество 512-байтовых блоков, выделенных для файла. Это может быть меньше, чем st_size/512
, когда файл имеет ошибки.
stat_result.st_blksize
:Предпочтительный размер блока для эффективного ввода/вывода файловой системы. Запись в файл небольшими порциями может привести к неэффективному чтению/изменению/перезаписи.
stat_result.st_rdev
:Тип устройства, если устройство inode.
stat_result.st_flags
:Пользовательские флаги для файла.
root
:stat_result.st_gen
:Номер генерации файла.
stat_result.st_fstype
:Строка, которая однозначно определяет тип файловой системы, в которой находится файл.
stat_result.st_rsize
:Реальный размер файла.
stat_result.st_creator
:Создатель файла.
stat_result.st_type
:Тип файла.
stat_result.st_file_attributes
:Атрибуты файла Windows: dwFileAttributes
член структуры BY_HANDLE_FILE_INFORMATION
, возвращаемой функцией GetFileInformationByHandle()
. Смотрите константы FILE_ATTRIBUTE_*
в модуле статистики.
stat_result.st_reparse_tag
:Когда st_file_attributes
имеет установленный FILE_ATTRIBUTE_REPARSE_POINT
, это поле содержит тег, идентифицирующий тип точки повторной обработки. Смотрите константы IO_REPARSE_TAG_*
в модуле статистики.
Изменено в версии Python 3.8: В Windows член
stat_result.st_mode
теперь идентифицирует специальные файлы какstat.S_IFCHR
,stat.S_IFIFO
илиstat.S_IFBLK
в зависимости от ситуации.Изменено в версии Python 3.12: В Windows
stat_result.st_ctime
устарел. В конечном итоге он будет содержать время последнего изменения метаданных для согласованности с другими платформами, но на данный момент все еще содержит время создания. Для определения времени создания теперь нужно использоватьstat_result.st_birthtime
.Изменено в версии Python 3.12: В Windows
stat_result.st_ino
теперь может иметь длину до 128 бит, в зависимости от файловой системы. Раньше его длина не превышала 64 бит, а более крупные идентификаторы файлов упаковывались произвольно.Изменено в версии Python 3.12: В Windows
stat_result.st_rdev
больше не возвращает значение. Раньше он содержал то же самое, что иstat_result.st_dev
, что было неправильно.Новое в версии Python 3.12: в Windows добавлен элемент
stat_result.st_birthtime
.
stat_result
.# файл test.py import os import time filename = 'test.py' stat_result = os.stat(filename) print(f'os.stat({filename}):') print(' Size:', stat_result.st_size) print(' Permissions:', oct(stat_result.st_mode)) print(' Owner:', stat_result.st_uid) print(' Device:', stat_result.st_dev) print(' Created :', time.ctime(stat_result.st_ctime)) print(' Last modified:', time.ctime(stat_result.st_mtime)) print(' Last accessed:', time.ctime(stat_result.st_atime)) # ВЫВОД в OS Linux # os.stat(test.py): # Size: 452 # Permissions: 0o100664 # Owner: 1000 # Device: 66305 # Created : Fri Oct 6 12:02:30 2023 # Last modified: Fri Oct 6 12:02:30 2023 # Last accessed: Fri Oct 6 12:02:30 2023