2012-08-17 46 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