Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取python中最顶层(入口)脚本的名称?_Python_Python 2.7_Introspection - Fatal编程技术网

如何获取python中最顶层(入口)脚本的名称?

如何获取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

我有一个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.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]
可能是更好的启发式方法