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

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

print(Scriptname)

当前回答

你可以在不导入操作系统或其他库的情况下做到这一点。

如果你想获取当前python脚本的路径,使用:__file__

如果你只想得到没有.py扩展名的文件名,使用这个:

__file__.rsplit("/", 1)[1].split('.')[0]

其他回答

你可以使用__file__来获取当前文件的名称。当在主模块中使用时,这是最初调用的脚本的名称。

如果你想省略目录部分(可能会出现),你可以使用os.path.basename(__file__)。

从Python 3.5开始,你可以简单地做:

from pathlib import Path
Path(__file__).stem

更多信息请访问:https://docs.python.org/3.5/library/pathlib.html#pathlib.PurePath.stem

例如,在我的用户目录下有一个名为test.py的文件,里面是这样的:

from pathlib import Path

print(Path(__file__).stem)
print(__file__)

运行这个输出:

>>> python3.6 test.py
test
test.py
import sys
print(sys.argv[0])

这将为python打印foo.py,为python打印dir/foo.py,等等。它是python的第一个参数。(注意py2exe之后是foo.exe。)

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

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

注意__file__将给出该代码所在的文件,该文件可以导入,并且与正在解释的主文件不同。要获取主文件,可以使用特殊的__main__模块:

import __main__ as main
print(main.__file__)

注意__main__。__file__在Python 2.7中有效,但在3.2中无效,因此使用上面的import-as语法使其可移植。