【问题标题】:Find location of python module source file from within class of module从模块类中查找 python 模块源文件的位置
【发布时间】:2012-08-17 07:15:43
【问题描述】:

虽然根据查找python模块的源文件有一些相关的线程,但我没有找到关于如何以最简单可靠的方式从python类中获取文件名的答案。对于位于/usr/local/TestLib.py 的假设文件:

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

我希望变量 myLocation 包含字符串 /usr/local/TestLib.py__file__ 在我的课堂上似乎不起作用。

我该怎么做?

【问题讨论】:

  • __file__ 可以在模块内的任何地方工作,无论是在类内还是类外。

标签: python class module


【解决方案1】:

__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

【讨论】:

  • 请注意,如果您特别想获取.py 文件,而不是.pyc,则需要添加if 语句来检查self.myLoc 并进行调整.
猜你喜欢
  • 2010-09-21
  • 2015-04-23
  • 2011-07-14
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
相关资源
最近更新 更多