我正在尝试获取当前正在运行的Python脚本的名称。

我有一个名为foo.py的脚本,我想这样做,以便获得脚本名称:

print(Scriptname)

当前回答

如果你在基类中获取脚本路径,使用此代码,子类将正确获取脚本路径。

sys.modules[self.__module__].__file__

其他回答

由于OP要求当前脚本文件的名称,我更喜欢

import os
os.path.split(sys.argv[0])[1]

对于现代Python版本(3.4+),Path(__file__).name应该更习惯。同时,路径(__file__)。Stem提供了不带.py扩展名的脚本名称。

如果你在基类中获取脚本路径,使用此代码,子类将正确获取脚本路径。

sys.modules[self.__module__].__file__

以上答案很好。但我发现这种方法使用上述结果更有效。 这将导致实际的脚本文件名而不是路径。

import sys    
import os    
file_name =  os.path.basename(sys.argv[0])

如果你正在做一个不寻常的导入(例如,它是一个选项文件),尝试:

import inspect
print (inspect.getfile(inspect.currentframe()))

注意,这将返回文件的绝对路径。