2013-05-06 78 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) – 2013-05-06 17:45:36

回答

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 2014-07-03 16:09:49

相關問題