Python Glossary English

Python 3.8+sysфункция

sys.addaudithook()

аудит

Добавляет функцию-хук, которую интерпретатор вызывает на каждом событии аудита: открытие файла, импорт, запуск процесса, вызов sys.audit().

Синтаксис

sys.addaudithook(hook)  # hook(event: str, args: tuple)

Снять хук нельзя: он живёт до конца процесса, и функции remove нет намеренно. Хук вызывается очень часто (каждый open, import, compile), поэтому сразу отсеивайте лишние события по имени и не делайте в нём медленной работы. Исключение из хука отменяет само действие — так можно запретить open, но это не песочница: код, которому не доверяете, обходит аудит через ctypes и другие лазейки.

Примеры

import sys
def hook(event, args):
    if event.startswith('myapp.'):
        print('аудит:', event, args)
sys.addaudithook(hook)
sys.audit('myapp.login', 'alice')  # → аудит: myapp.login ('alice',)
import sys
def guard(event, args):
    if event == 'open' and str(args[0]).endswith('.secret'):
        raise PermissionError('запрещено аудитом')
sys.addaudithook(guard)
try:
    open('x.secret', 'w')
except PermissionError as e:
    print(e)  # → запрещено аудитом

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности