2013-05-10 83 views
0

我在Python中有一个实用程序模块,需要知道它正在使用的应用程序的名称。有效地,这意味着调用启动应用程序的顶级python脚本的名称(即__name ==“__ main__”将是真实的)。 __name__给出了当前python文件的名称,但是如何获取调用链中最顶层的名称?如何获取python中最顶层(入口)脚本的名称?

+4

'sys.argv [0]'也许? – 2013-05-10 03:26:51

回答

4

把我的Google查询切换到“如何从python中找到进程名称”与如何查找“顶级脚本名称”相比,我找到了this overly thorough treatment of the topic。总结如下:

import __main__ 
import os 

appName = os.path.basename(__main__.__file__).strip(".py") 
+0

在某些情况下,strip部分不太正确:''pretend_example_silly.py“.strip(”.py“)'给出''retend_example_sill”'。 'os.path.basename(__ main __.__ file __)。split(“。”)[0]'可能是一个更好的启发式 – FredL 2015-12-01 15:54:40

1

您可以使用inspect这个模块。例如:

a.py

#!/usr/bin/python 

import b 

b.py

#!/usr/bin/python 

import inspect 

print inspect.stack()[-1][1] 

运行python b.py打印b.py。运行python a.py打印a.py

但是,我想第二个sys.argv[0]的建议作为一个更明智和惯用的建议。