捕获文件名

时间:2015-10-29 08:53:55

标签: python

我正在编写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()并不好。

是否可以捕获导入另一个函数的文件名并将其打印在函数内部,如上所述?

2 个答案:

答案 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()的内容。

我猜你的意思是导入就是打电话。