Чтобы получить текущий файловый модуль, содержащий папку, вот что сработало для меня:
ел бы иметь возможность динамически извлекать текущий исполняемый модуль или имя класса из импортированного модуля. Вот некоторый код:
foo.py:
def f():
print __name__
bar.py:
from foo import f
def b(): f()
Это, очевидно, не работает как__name__
это имя модуля, который содержит функцию. То, что я хотел бы получить доступ внутриfoo
module - это имя текущего исполняющего модуля, который используетfoo
, Так что в случае выше это будетbar
но если какой-либо другой модуль импортированfoo
Я хотел быfoo
динамически иметь доступ к имени этого модуля.
Редактировать: inspect
Модуль выглядит довольно многообещающе, но это не совсем то, что я искал. Я надеялся на какую-то глобальную переменную или переменную уровня среды, к которой я мог получить доступ, которая содержала бы имя текущего исполняемого модуля. Не то чтобы я не хотел проходить через стек, чтобы найти эту информацию - я просто подумал, что Python, возможно, уже раскрыл эти данные.
Редактировать: Вот как я пытаюсь это использовать. У меня есть два разных приложения Django, которые оба должны регистрировать ошибки в файл. Допустим, они называются «AppOne» и «AppTwo». У меня также есть место, куда я хотел бы войти эти файлы: "/home/hare/app_logs
". В каждом приложении в любой заданной точке я хотел бы иметь возможность импортировать свой модуль логгера и вызывать функцию журнала, которая записывает строку журнала в файл. Однако я хотел бы создать каталог подapp_logs
это имя текущего приложения («AppOne» или «AppTwo»), чтобы файлы журналов каждого приложения помещались в соответствующие каталоги журналов.
Чтобы сделать это, я подумал, что для модуля логгера лучше всего иметь доступ к некоторой глобальной переменной, которая обозначает имя текущего приложения, поскольку оно отвечает за знание местоположения родительского каталога журналирования и создание журналирования приложения. каталог, если он еще не существует.