stat
— Interpreting stat()
results¶
Вихідний код: Lib/stat.py
The stat
module defines constants and functions for interpreting the
results of os.stat()
, os.fstat()
and os.lstat()
(if they
exist). For complete details about the stat()
, fstat()
and
lstat()
calls, consult the documentation for your system.
Змінено в версії 3.4: Модуль stat підтримується реалізацією C.
Модуль stat
визначає такі функції для перевірки певних типів файлів:
- stat.S_ISDIR(mode)¶
Повертає відмінне від нуля значення, якщо режим з каталогу.
- stat.S_ISCHR(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із файлу спеціального символьного пристрою.
- stat.S_ISBLK(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із спеціального блокового файлу пристрою.
- stat.S_ISREG(mode)¶
Повертає відмінне від нуля значення, якщо режим із звичайного файлу.
- stat.S_ISFIFO(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із FIFO (іменований канал).
- stat.S_ISLNK(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із символічного посилання.
- stat.S_ISSOCK(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із сокета.
- stat.S_ISDOOR(mode)¶
Повертає відмінне від нуля значення, якщо режим від дверей.
Нове в версії 3.4.
- stat.S_ISPORT(mode)¶
Повертає відмінне від нуля значення, якщо режим походить із порту події.
Нове в версії 3.4.
- stat.S_ISWHT(mode)¶
Повертає відмінне від нуля значення, якщо режим вимкнено.
Нове в версії 3.4.
Дві додаткові функції визначені для більш загального керування режимом файлу:
- stat.S_IMODE(mode)¶
Повертає частину режиму файлу, яку можна встановити за допомогою
os.chmod()
—тобто біти дозволу файлу, а також біти sticky, set-group-id та set-user-id. (на системах, які їх підтримують).
- stat.S_IFMT(mode)¶
Return the portion of the file’s mode that describes the file type (used by the
S_IS*()
functions above).
Normally, you would use the os.path.is*()
functions for testing the type
of a file; the functions here are useful when you are doing multiple tests of
the same file and wish to avoid the overhead of the stat()
system call
for each test. These are also useful when checking for information about a file
that isn’t handled by os.path
, like the tests for block and character
devices.
Приклад:
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.lstat(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)
Надається додаткова службова функція для перетворення режиму файлу в зрозумілий рядок:
- stat.filemode(mode)¶
Перетворити режим файлу на рядок у формі „-rwxrwxrwx“.
Нове в версії 3.3.
Усі наведені нижче змінні є просто символічними індексами в 10-кортежі, які повертає os.stat()
, os.fstat()
або os.lstat()
.
- stat.ST_MODE¶
Режим захисту Inode.
- stat.ST_INO¶
Номер Inode.
- stat.ST_DEV¶
Inode пристрою знаходиться на.
- stat.ST_NLINK¶
Кількість посилань на inode.
- stat.ST_UID¶
ID користувача власника.
- stat.ST_GID¶
ID групи власника.
- stat.ST_SIZE¶
Розмір звичайного файлу в байтах; кількість даних, які очікують на деякі спеціальні файли.
- stat.ST_ATIME¶
Час останнього доступу.
- stat.ST_MTIME¶
Час останньої модифікації.
- stat.ST_CTIME¶
«ctime», як повідомляє операційна система. У деяких системах (як-от Unix) це час останньої зміни метаданих, а в інших (як-от Windows) це час створення (дивіться документацію платформи для отримання додаткової інформації).
Інтерпретація «розміру файлу» змінюється залежно від типу файлу. Для простих файлів це розмір файлу в байтах. Для FIFO та сокетів у більшості варіантів Unix (зокрема, у Linux), «розмір» — це кількість байтів, які очікують на читання під час виклику os.stat()
, os .fstat()
або os.lstat()
; іноді це може бути корисним, особливо для опитування одного з цих спеціальних файлів після неблокуючого відкриття. Значення поля розміру для інших символьних і блочних пристроїв більше змінюється в залежності від реалізації основного системного виклику.
Наведені нижче змінні визначають прапорці, які використовуються в полі ST_MODE
.
Використання наведених вище функцій більш переносне, ніж використання першого набору прапорів:
- stat.S_IFSOCK¶
Розетка.
- stat.S_IFLNK¶
Символічне посилання.
- stat.S_IFREG¶
Звичайний файл.
- stat.S_IFBLK¶
Блокувати пристрій.
- stat.S_IFDIR¶
Довідник.
- stat.S_IFCHR¶
Символьний пристрій.
- stat.S_IFIFO¶
FIFO.
- stat.S_IFDOOR¶
двері.
Нове в версії 3.4.
- stat.S_IFPORT¶
Порт події.
Нове в версії 3.4.
- stat.S_IFWHT¶
Відбілювання.
Нове в версії 3.4.
Наступні позначки також можна використовувати в аргументі mode os.chmod()
:
- stat.S_ISUID¶
Встановити біт UID.
- stat.S_ISGID¶
Set-group-ID біт. Цей біт має декілька спеціальних застосувань. Для каталогу це означає, що семантика BSD має використовуватися для цього каталогу: файли, створені там, успадковують свій ідентифікатор групи від каталогу, а не від ефективного ідентифікатора групи процесу створення, і створені там каталоги також отримають Встановлено біт
S_ISGID
. Для файлу, який не має встановленого біта виконання групи (S_IXGRP
), біт set-group-ID вказує на обов’язкове блокування файлу/запису (див. такожS_ENFMT
).
- stat.S_ISVTX¶
Липкий шматочок. Коли цей біт встановлено для каталогу, це означає, що файл у цьому каталозі може бути перейменовано або видалено лише власником файлу, власником каталогу або привілейованим процесом.
- stat.S_IRWXU¶
Маска для дозволів власника файлу.
- stat.S_IRUSR¶
Власник має дозвіл на читання.
- stat.S_IWUSR¶
Власник має дозвіл на запис.
- stat.S_IXUSR¶
Власник має дозвіл на виконання.
- stat.S_IRWXG¶
Маска для групових дозволів.
- stat.S_IRGRP¶
Група має дозвіл на читання.
- stat.S_IWGRP¶
Група має дозвіл на запис.
- stat.S_IXGRP¶
Група має дозвіл на виконання.
- stat.S_IRWXO¶
Маска для дозволів для інших (не в групі).
- stat.S_IROTH¶
Інші мають дозвіл на читання.
- stat.S_IWOTH¶
Інші мають дозвіл на запис.
- stat.S_IXOTH¶
Інші мають дозвіл на виконання.
- stat.S_ENFMT¶
Примусове блокування файлів System V. Цей прапорець спільний з
S_ISGID
: блокування файлів/записів застосовується для файлів, які не мають встановленого біта виконання групи (S_IXGRP
).
Наступні позначки можна використовувати в аргументі flags os.chflags()
:
- stat.UF_NODUMP¶
Не скидайте файл.
- stat.UF_IMMUTABLE¶
Файл не можна змінювати.
- stat.UF_APPEND¶
Файл можна лише додавати до.
- stat.UF_OPAQUE¶
Каталог є непрозорим при перегляді через об’єднаний стек.
- stat.UF_NOUNLINK¶
Файл не можна перейменовувати або видаляти.
- stat.UF_COMPRESSED¶
Файл зберігається стисненим (macOS 10.6+).
- stat.UF_HIDDEN¶
Файл не повинен відображатися в графічному інтерфейсі (macOS 10.5+).
- stat.SF_ARCHIVED¶
Файл може бути заархівований.
- stat.SF_IMMUTABLE¶
Файл не можна змінювати.
- stat.SF_APPEND¶
Файл можна лише додавати до.
- stat.SF_NOUNLINK¶
Файл не можна перейменовувати або видаляти.
- stat.SF_SNAPSHOT¶
Файл є файлом знімка.
Для отримання додаткової інформації див. сторінку довідки систем *BSD або macOS chflags(2).
У Windows такі константи атрибутів файлів доступні для використання під час тестування бітів у члені st_file_attributes
, який повертає os.stat()
. Дивіться документацію Windows API, щоб дізнатися більше про значення цих констант.
- stat.FILE_ATTRIBUTE_ARCHIVE¶
- stat.FILE_ATTRIBUTE_COMPRESSED¶
- stat.FILE_ATTRIBUTE_DEVICE¶
- stat.FILE_ATTRIBUTE_DIRECTORY¶
- stat.FILE_ATTRIBUTE_ENCRYPTED¶
- stat.FILE_ATTRIBUTE_HIDDEN¶
- stat.FILE_ATTRIBUTE_INTEGRITY_STREAM¶
- stat.FILE_ATTRIBUTE_NORMAL¶
- stat.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED¶
- stat.FILE_ATTRIBUTE_NO_SCRUB_DATA¶
- stat.FILE_ATTRIBUTE_OFFLINE¶
- stat.FILE_ATTRIBUTE_READONLY¶
- stat.FILE_ATTRIBUTE_REPARSE_POINT¶
- stat.FILE_ATTRIBUTE_SPARSE_FILE¶
- stat.FILE_ATTRIBUTE_SYSTEM¶
- stat.FILE_ATTRIBUTE_TEMPORARY¶
- stat.FILE_ATTRIBUTE_VIRTUAL¶
Нове в версії 3.5.
У Windows такі константи доступні для порівняння з елементом st_reparse_tag
, який повертає os.lstat()
. Це добре відомі константи, але це не вичерпний список.