Как получить кадр стека для передачи в traceback.print_stack?
traceback.print_stack
С Python 3.3a1 документы :
traceback.print_stack(f=None, limit=None, file=None) эта функция печатает трассировку стека из своей точки вызова Необязательный f Аргумент может использоваться для указания альтернативного стека фрейма для запуска. необязательный аргумент limit и file имеет то же значение, что и для print_exception().
traceback.print_stack(f=None, limit=None, file=None)
эта функция печатает трассировку стека из своей точки вызова Необязательный f Аргумент может использоваться для указания альтернативного стека фрейма для запуска. необязательный аргумент limit и file имеет то же значение, что и для print_exception().
f
print_exception()
Но нигде в документации я не нашел способа получить кадр стека. Если быть точным, скажем, я хочу напечатать трассировку стека, начиная на один уровень выше точки вызова. Как я могу это сделать?
inspect.stack() вернет вам текущий стек в виде списка. Вы можете выбрать любой кадр, который хотите из него. Вы также можете сделать, например, inspect.currentframe().f_back, чтобы получить кадр вашего звонящего. По сути, модуль inspect находится там, где он находится.
inspect.stack()
inspect.currentframe().f_back
inspect
Эта документация содержит информацию о функциях, которые можно использовать для получения стекового фрейма, например, inspect.currentframe().
inspect.currentframe()
В дополнение к проверке модуля вы можете попробовать:
import sys sys._getframe(1)
или
import sys sys._getframe().f_back
Имейте в виду, что это частная функция, некоторые версии python могут ее не реализовывать.