Как я могу получить имя файла и номер строки в скрипте Python.
Именно информацию о файле мы получаем из трассировки исключения. В этом случае без исключения.
Благодаря mcandre, ответ таков:
#python3
from inspect import currentframe, getframeinfo
frameinfo = getframeinfo(currentframe())
print(frameinfo.filename, frameinfo.lineno)
import inspect inspect.getframeinfo(inspect.currentframe()).lineno
currentframe()
вызывается, что означает, что вы не можете упростить это более чемgetframeinfo(currentframe()).lineno
(если вас интересует только номер строки, а не имя файла). См. Docs.python.org/2/library/inspect.html#inspect.currentframeИспользуете ли вы,
currentframe().f_back
зависит от того, используете ли вы функцию или нет.Вызов инспектора напрямую:
Вызов функции, которая делает это за вас:
источник
Удобно, если используется в общем файле - выводит имя файла, номер строки и функцию вызывающего:
источник
Имя файла :
Линия :
(не
inspect.currentframe().f_back.f_lineno
как указано выше)источник
NameError: global name '__file__' is not defined
на моем интерпретатора:Python 2.7.6 (default, Sep 26 2014, 15:59:23)
. См stackoverflow.com/questions/9271464/...Лучше также использовать sys-
Результат:
источник
Просто чтобы внести свой вклад,
есть
linecache
модуль в python, вот две ссылки, которые могут помочь.документация модуля
linecache исходный код linecache
В некотором смысле вы можете «выгрузить» целый файл в его кеш и прочитать его с данными linecache.cache из класса.
Для получения дополнительной информации для обработки ошибок вы можете просто использовать
источник
источник
__file__
: См stackoverflow.com/questions/3056048/...В Python 3 вы можете использовать вариант:
Затем в коде вы можете использовать:
Производить:
Где 123 и 124 - линии, с которых совершаются звонки.
источник
Вот что у меня работает, чтобы получить номер строки в Python 3.7.3 в VSCode 1.39.2 (
dmsg
это моя мнемоника для сообщения отладки):Чтобы вызвать отображение переменной
name_s
и ее значения:Результат выглядит так:
источник