все Python 3statфункция
stat.S_IMODE()
биты режима
Вырезает из st_mode биты прав доступа (rwx, а также setuid, setgid и sticky), отбрасывая тип файла.
Синтаксис
stat.S_IMODE(mode)
Результат — обычное int, и print() показывает его десятичным (0o750 печатается как 488): для чтения оборачивайте в oct(). В отличие от `mode & 0o777` маска S_IMODE равна 0o7777 и сохраняет setuid/setgid/sticky. На Windows os.chmod() меняет только флаг «только чтение», поэтому права там всегда 0o666 или 0o444.
Примеры
import os, stat
open('run.sh', 'w').close()
os.chmod('run.sh', 0o750)
mode = os.stat('run.sh').st_mode
print(stat.S_IMODE(mode)) # → 488 — то же число, но десятичным (на Windows 438)
print(oct(stat.S_IMODE(mode))) # → 0o750 (на Windows chmod меняет только флаг «только чтение»)
import stat
mode = 0o104755 # обычный файл с битом setuid
print(oct(mode & 0o777), oct(stat.S_IMODE(mode))) # → 0o755 0o4755
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности