Чтобы получить текущий файловый модуль, содержащий папку, вот что сработало для меня:

ел бы иметь возможность динамически извлекать текущий исполняемый модуль или имя класса из импортированного модуля. Вот некоторый код:

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»), чтобы файлы журналов каждого приложения помещались в соответствующие каталоги журналов.

Чтобы сделать это, я подумал, что для модуля логгера лучше всего иметь доступ к некоторой глобальной переменной, которая обозначает имя текущего приложения, поскольку оно отвечает за знание местоположения родительского каталога журналирования и создание журналирования приложения. каталог, если он еще не существует.

Ответы на вопрос(11)

Ваш ответ на вопрос