如何获取python中最顶层(入口)脚本的名称?
我有一个Python实用程序模块,它需要知道正在使用它的应用程序的名称。实际上,这意味着启动应用程序时调用的顶级python脚本的名称(即uuu name==“uuu main_uuu”为true的脚本)__name\uuuu提供了当前python文件的名称,但如何获取调用链中最顶端的文件的名称?您可以使用该模块进行此操作。例如: a.py:如何获取python中最顶层(入口)脚本的名称?,python,python-2.7,introspection,Python,Python 2.7,Introspection,我有一个Python实用程序模块,它需要知道正在使用它的应用程序的名称。实际上,这意味着启动应用程序时调用的顶级python脚本的名称(即uuu name==“uuu main_uuu”为true的脚本)__name\uuuu提供了当前python文件的名称,但如何获取调用链中最顶端的文件的名称?您可以使用该模块进行此操作。例如: a.py: #!/usr/bin/python import b #!/usr/bin/python import inspect print inspect
#!/usr/bin/python
import b
#!/usr/bin/python
import inspect
print inspect.stack()[-1][1]
b.py:
#!/usr/bin/python
import b
#!/usr/bin/python
import inspect
print inspect.stack()[-1][1]
运行pythonb.py
打印b.py
。运行pythona.py
打印a.py
然而,我想支持
sys.argv[0]
的建议,认为这是一个更明智、更惯用的建议。将我的Google查询切换到“如何从python中查找进程名”与如何查找“顶级脚本名”,我发现。总结如下:
import __main__
import os
appName = os.path.basename(__main__.__file__).strip(".py")
在某些情况下,条带部分并不完全正确:
“假装”示例“愚蠢的.py”。条带(.py”)
给出了“翻新示例”窗台“
os.path.basename(\uuuuu main\uuuu.\uuuuu file\uuuuu).split(“.”[0]
可能是更好的启发式方法