我正在编写Python 3.4脚本。在我的目录中:
main.py
core.py
在main.py
我有:
import core
print(core.status())
在core.py
我有:
def status():
return filename
我想要导出filename
的{{1}}。以下是core.status()
,因为我在很多文件中使用了filename='main.py'
,因此使用core.status()
并不好。
是否可以捕获导入另一个函数的文件名并将其打印在函数内部,如上所述?
答案 0 :(得分:1)
要获取调用者的文件名,您应该获得父pid。
import psutil
def status():
callee = psutil.Process()
caller = psutil.Process(callee.ppid())
return caller.cmdline()
试试这段代码:
import sys
def status():
print sys.exc_info()[2].tb_frame.f_code.co_filename
答案 1 :(得分:1)
您可以从堆栈跟踪中提取它:
import traceback
def status():
print(traceback.extract_stack(limit=2)[-2][0])
-2
仅表示堆栈的第二个最后一个条目,即调用status()
的内容。
我猜你的意思是导入就是打电话。