У меня есть функция, которая хранится в виде строки, которая выглядит примерно так:python traceback строки в exec?
func_str = "def <func_name> ..."
Я оцениваю его с помощью «Exec» и использовать его на входе следующим образом:
exec func_str in locals()
locals()[func_name](inp)
Теперь эта функция может иметь исключение, и я хотел бы знать, какая строка вызвала ее в строке. Запуск его в интерпретаторе дает мне сообщение об ошибке, которое в точности то, что я хочу:
File "<string>", line 6, in <func_name>
TypeError: can only concatenate tuple (not "int") to tuple
Это говорит мне, что шестая строка в моей строке вызывает проблему.
Есть ли способ захвата этого программного обеспечения? Я рассмотрел аналогичные решения, но они не рассматривают исключение, исходящее из строки, которая была выполнена в локальной области. При попытке использовать модуль трассировки я получил только номер строки для внешней функции, вызывающей exec.
благодаря
exec должен был бы определить функцию в локальной области видимости, которую я затем выполняю с помощью "locals() [func_name] (inp)" –