Форум сайта python.su
0
В модуле m1 у меня есть метод log(). Этот метод через import я вызываю в модуле m2. Можно ли получить имя файла модуля m2 в модуле m1 (т.е. в методе)?
Отредактировано k0st1an (Сен. 18, 2015 14:06:16)
Офлайн
0
в модуле m1 надо вызвать вот это inspect.stack()[1][1]
PS: Какие-то безумные проблемы с редактором.... Код просто нереально вставить.
Офлайн
857
k0st1anТут возникает вопрос, зачем это надо.
Можно ли получить имя файла модуля m2 в модуле m1 (т.е. в методе)?
Офлайн
0
Таким образом я получаю имя модуля, которое потом вывожу на консоль (logging). Удобно, чтоб каждый раз не передавать что и где было, сразу понятно где искать.
Офлайн
253
k0st1anУма не приложу чем вам обычный traceback не угодил.
чтоб каждый раз не передавать что и где было, сразу понятно где искать.
import traceback def f(): traceback.print_stack() f()
Отредактировано doza_and (Сен. 20, 2015 01:28:20)
Офлайн
0
m1:
import logging import traceback def log(msg): f = '%(pathname)s | %(module)s | %(message)s' logging.basicConfig(format=f) logging.log(logging.WARNING, msg) print('='*30) def log2(): traceback.print_stack() print('='*30)
import m1 m1.log('TEST') m1.log2()
$ python3 m2.py /Users/k0st1an/develop/agent/m1.py | m1 | TEST ============================== File "m2.py", line 4, in <module> m1.log2() File "/Users/k0st1an/develop/agent/m1.py", line 14, in log2 traceback.print_stack() ==============================
Офлайн
253
k0st1anРазница в том где меньше телодвижений, и где получается более общепринятый результат.
Но по большому случаю какая разница как получить информацию?
Офлайн
0
doza_andЯ пока не понял как получить данные. %exc_info% - if no exception has occurred, None. Наверное нужно как-то хитро вызывать. Хочется стандарта, но пока отложил. Записал в TODO, в коде, а пока прёт пишу код…
Разница в том где меньше телодвижений, и где получается более общепринятый результат.
А “%exc_info” вас не устраивает?
Офлайн
186
> Удобно, чтоб каждый раз не передавать что и где было, сразу понятно где искать.
Не надо придумывать адовы костыли. Открой для себя отладчик / IDE.
Офлайн
0
RodegastМм… PyCharm юзаю. Да и причём тут это? Мне ведь не только во время отладки нужно.
Не надо придумывать адовы костыли. Открой для себя отладчик / IDE.
Офлайн