2013-05-10 47 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]的建議作爲一個更明智和慣用的建議。