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

3

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

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

我该如何做到这一点?

2个回答

4

使用 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]

4
Python之禅中说道:明确胜于暗示。
为什么不像这样调用:your.autodiscover(__file__),甚至是 your.autodiscover(dirname(__file__))。那样,阅读你代码的人就不必寻找autodiscover函数中的魔法,或在文档中查找了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接