如何获取正在运行的Python脚本的名称?

13

如何获取正在运行的Python脚本的名称?

我尝试过使用 os.__file__,但它返回的是os模块所在文件的名称。


2
在Python中,如何获取当前正在执行的文件的路径和名称? - S.Lott
https://dev59.com/nG855IYBdhLWcg3wxHYq 看起来更适合作为重复问题。 - Teepeemm
6个回答

24
>> import os
>> import sys
>> print sys.argv[0]

或者如果你只想要脚本而不是完整路径

>>
>> print os.path.basename(sys.argv[0])

1
没错,这个方法可行 (=1)。@tehryan 请接受此答案,以帮助其他有同样问题的人。 - Mawg says reinstate Monica

24

使用

thisFile = __file__

这是魔法!


1
我收到了 NameError: name '__file__' is not defined 的错误。 - bos
你使用的是哪个Python实现?CPython还是其他的? - Charles Ritchie
Python 2.7.3。我刚刚运行了“python”,然后输入 print __file__ - bos
1
@bos 我认为你无法从交互模式中获取它,需要作为文件运行。 - Fred Wu

11

这取决于你对"运行中的Python脚本"的理解。

__file__将会给你当前执行文件的名称。如果是一个模块,你会得到它被导入的位置,例如blahblah.pyc。

sys.argv[0]将会给你正在运行的脚本的名称,即使是从导入了该脚本的模块中调用的。

请查阅关于此主题的早期问题的答案(参见S.Lott在你的问题上的评论)。


1
import __main__
print __main__.__file__

这将打印当前正在运行的文件名。

1

sys.argv[0] 应该给出脚本的名称。


-1
sys.path[0]

返回启动Python解释器的脚本路径。

如果您直接读取此脚本,它将返回该脚本的路径。如果该脚本是从另一个脚本导入的,则会返回该脚本的路径。


我没有点踩,只是测试了一下。这给了我K:/code/allRequirementsTests,这是脚本的绝对路径,减去扩展名。 - Mawg says reinstate Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接