如何在Python中获取函数调用的路径?

时间:2014-01-02 06:52:58

标签: python django introspection traceback

我正在设计类似于Django的Admin.Autodiscover()的东西。

我面临的第一个障碍是获取调用admin.autodiscover()的文件的路径,以便我可以遍历该文件夹中的应用程序/库,并确定应该在admin中保留哪些模型。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

Python的禅宗说:明确比隐含更好。

为什么不这样称呼它:your.autodiscover(__file__),甚至your.autodiscover(dirname(__file__))。这样,阅读代码的人不必在autodiscover函数中查找魔法,也不必在文档中查找。

答案 1 :(得分:3)

使用traceback

这是我发现的一种方式:

import traceback
def get_caller_filename():
   # last element ([-1]) is me, the one before ([-2]) is my caller. The first element in caller's data is the filename
   return traceback.extract_stack()[-2][0]