如何在python中获取调用函数的脚本的名称?
我知道如何在python中获取调用函数的脚本的名称?,python,Python,我知道\uuuu文件\uuuu包含包含代码的文件名,但是有没有办法获取调用函数的脚本/文件的名称 如果我有一个名为filenametest_b.py的文件: def printFilename(): print(__file__) from filenametest_b import * printFilename() 我在filenametest_a.py中导入函数: def printFilename(): print(__file__) from filenamet
\uuuu文件\uuuu
包含包含代码的文件名,但是有没有办法获取调用函数的脚本/文件的名称
如果我有一个名为filenametest_b.py的文件
:
def printFilename():
print(__file__)
from filenametest_b import *
printFilename()
我在filenametest_a.py
中导入函数:
def printFilename():
print(__file__)
from filenametest_b import *
printFilename()
我得到:
C:\Users\a150495>python filenametest_a.py
C:\Users\a150495\filenametest_b.py
是否可以在
b
文件中执行某些操作以打印a
文件的名称?您可以打印sys.argv[0]
以获取脚本文件名
要获取调用方的文件名,您需要使用获取调用帧,然后可以从中检索文件名:
import inspect, sys
print inspect.getsourcefile(sys, sys._getframe(1))
您可以打印
sys.argv[0]
以获取脚本文件名
要获取调用方的文件名,您需要使用获取调用帧,然后可以从中检索文件名:
import inspect, sys
print inspect.getsourcefile(sys, sys._getframe(1))
问得有点太早了,我想我已经解决了 我只是在
inspect
模块中四处看看:
我将其添加到filenametest_b.py
文件中:
def printCaller():
frame,filename,line_number,function_name,lines,index=\
inspect.getouterframes(inspect.currentframe())[1]
print(frame,filename,line_number,function_name,lines,index)
因此:
C:\Users\a150495\filenametest_b.py
(<frame object at 0x000000000231D608>, 'filenametest_a.py', 5, '<module>', ['printCaller()\n'], 0)
C:\Users\a150495\filenametest\u b.py
(,'filenametest_a.py',5',['printCaller()\n'],0)
所以这应该行得通。问得有点太早了,我想我刚刚解决了它
def printFilename():
import traceback
print traceback.extract_stack()[-2][0]
我只是在inspect
模块中四处看看:
我将其添加到filenametest_b.py
文件中:
def printCaller():
frame,filename,line_number,function_name,lines,index=\
inspect.getouterframes(inspect.currentframe())[1]
print(frame,filename,line_number,function_name,lines,index)
因此:
C:\Users\a150495\filenametest_b.py
(<frame object at 0x000000000231D608>, 'filenametest_a.py', 5, '<module>', ['printCaller()\n'], 0)
C:\Users\a150495\filenametest\u b.py
(,'filenametest_a.py',5',['printCaller()\n'],0)
所以这应该是可行的。您可能会解析
sys.argv[0]
您可能会解析sys.argv[0]
inspect.getsourcefile(sys.\u getframe(1))
工作正常。谢谢。inspect.getsourcefile(sys.\u getframe(1))
工作正常。谢谢
def printFilename():
import traceback
print traceback.extract_stack()[-2][0]