2013-05-06 3 views
0

Я работаю над созданием каталога пути к файлу на основе метода вызова и имени сценария сценария, который вызывает его перед ним, не передавая никакой информации. Идея состоит в том, что пользователь должен написать очень упрощенный файл .py с очень небольшим знанием внутренних методов вызываемого сценария, и поэтому ничего не должно быть передано пользователем пользователем.Получение имени файла скрипта python, вызвавшего функцию

Мне удалось получить имя метода вызывающих скриптов, который использует тестовый файл, с модулем , проверяющим, но, как ни странно, у меня возникли проблемы с получением имени фактического файла .py, который вызвал второй .py-файл со второй точки зрения py.

Чтобы уточнить, это то, что я пытаюсь сделать:

---Script1.py--- 
import Script2 

userMethod(self): 
    callScript = Script2.Script2Class() 
    callScript.execute() 


---Script2.py--- 
class Script2Class(object): 

    def execute(self): 
     # Other code above this 
     self.getPathInfo() 

    def getPathInfo(self): 
     # Code needed to obtain original scripts filename (the part I've been stumped with) 

Я не имея много удачи со стеком, который, как я получаю имя Вызов методов : Я просто не смотрю в нужное место в стеке, или я пропустил что-то очевидное здесь?

+0

Другой дубликат: [Определите, где функция была выполнена?] (Http://stackoverflow.com/q/16305867) –

ответ

1
import inspect 
# ... your code here 
def getPathInfo(self): 
    for item in inspect.stack(): 
     if item and __file__ not in item: 
      return item[1] 

    return __file__ 
+3

Я предлагаю вам добавить некоторые пояснения к коду ... код-только (иногда) хорошо, но код * и * информация есть (много раз) очень хорошо – Barranka

Смежные вопросы