2012-08-17 70 views
0

雖然根據查找python模塊的源文件有一些相關的線程,但我沒有找到關於如何從python類中獲取文件名的答案一個最簡單可靠的方法。對於位於/usr/local/TestLib.py一個假設的文件:從模塊的類中找到python模塊源文件的位置

class MyTest(object): 
    def __init__(self): 
     myLocation = XXX 

我希望變量myLocation包含字符串/usr/local/TestLib.py__file__似乎不適用於我的課堂。

我該怎麼做?

+2

'__file__'工作中隨時隨地模塊,是一個類的內部或外部。 – lunaryorn 2012-08-17 07:17:48

回答

3

__file__應該在類似的類中工作。也許你認爲它不起作用,因爲它不一定會返回完整的路徑。 __file__對於如何處理路徑而言是一個小問題,所以如果你想要完整的路徑,那麼你可能需要在路徑的第一部分加上這個例子。 (有關這方面的細節,看看這個問題:Python __file__ attribute absolute or relative?

import os 

class Foo: 
    def __init__(self): 
     self.myLoc = os.path.abspath(__file__) 

f = Foo() 
print f.myLoc 
+0

請注意,如果您特別想獲取'.py'文件,而不是'.pyc',則需要添加'if'語句來檢查'self.myLoc'並進行調整。 – 2012-08-17 07:47:16