获取调用函数的python脚本的文件名

时间:2013-05-06 17:39:37

标签: python stack filenames

我一直在尝试根据调用方法和脚本的脚本名称创建一个文件路径目录,该脚本在调用前面的脚本名称而不传递任何信息。这个想法是用户应该编写一个非常简单的.py文件,对所调用脚本的内部方法知之甚少,因此用户不应该传递任何不必要的内容。

我设法获得了使用带有 inspect 模块的测试用例的调用脚本方法的名称,但奇怪的是我在获取实际.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)

我对堆栈的运气并不好,这就是我获取调用方法名称的方式:我只是没有找到堆栈中的正确位置,或者我错过了一些明显的东西?

1 个答案:

答案 0 :(得分: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__
相关问题