【问题标题】:How to get the name of a running Python script?如何获取正在运行的 Python 脚本的名称?
【发布时间】:2010-11-29 20:17:26
【问题描述】:

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

我尝试了os.__file__,但它返回了os 所在文件的名称。

【问题讨论】:

标签: python


【解决方案1】:
import __main__
print __main__.__file__

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

【讨论】:

    【解决方案2】:
    sys.path[0]
    

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

    如果你直接阅读这个脚本,它会返回脚本的路径。如果脚本是从另一个脚本导入的,它将返回该脚本的路径。

    【讨论】:

    • 我没有投反对票,只是进行了测试。这给了我K:/code/allRequirementsTests 这是脚本的绝对路径,减去扩展名
    【解决方案3】:

    这取决于您所说的“正在运行的 Python 脚本”是什么意思。

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

    sys.argv[0] 将为您提供正在运行的脚本的名称,即使是从该脚本导入的模块调用。

    请查看有关此主题的先前问题的答案(请参阅 S.Lott 对您的问题的评论)。

    【讨论】:

      【解决方案4】:

      使用

      thisFile = __file__
      

      太神奇了!

      【讨论】:

      • 我收到NameError: name '__file__' is not defined
      • 您使用的是哪个 Python 实现? CPython 还是别的什么?
      • Python 2.7.3。我刚跑了“python”然后print __file__
      • @bos 我认为您无法从交互模式中获取它,需要作为文件运行。
      【解决方案5】:
      >> import os
      >> import sys
      >> print sys.argv[0]
      

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

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

      【讨论】:

      • 是的,有效 (=1)。 @tehryan 请接受此作为答案,以帮助有相同问题的其他人
      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2011-06-03
        • 2014-01-18
        • 1970-01-01
        • 2014-05-03
        • 2010-10-22
        • 1970-01-01
        • 2011-03-12
        • 2010-10-10
        相关资源
        最近更新 更多