【问题标题】:Path to current file depends on how I execute the program当前文件的路径取决于我如何执行程序
【发布时间】:2010-12-01 19:32:06
【问题描述】:

这是我的 Python 程序:

#!/usr/bin/env python

import os

BASE_PATH = os.path.dirname(__file__)
print BASE_PATH

如果我使用python myfile.py 运行它,它会打印一个空字符串。如果我使用myfile.py 运行它,它会打印正确的路径。为什么是这样?我正在使用 Windows Vista 和 Python 2.6.2。

【问题讨论】:

    标签: python path


    【解决方案1】:

    在很多情况下最好使用:

    os.path.dirname(sys.argv[0])
    

    【讨论】:

      【解决方案2】:
      os.path.normpath(os.path.join(os.getcwd(),os.path.dirname(__file__)))
      

      【讨论】:

        【解决方案3】:

        这只是一个无害的 Windows 怪癖;您可以使用os.path.abspath(__file__) 进行补偿,请参阅the docs

        【讨论】:

        • 我是仅在 Windows 上使用abspath,还是无论如何都使用它?
        • 无论如何我都可能会使用它。
        • 如果你想要绝对路径(而不是相对于当前目录),我会在任何地方使用它。
        • @Alex, with os.path.abspath(file), python -m cProfile myfile.py return "C:\Python25\lib\cProfile.py" (或"/usr/lib/python2.5/cProfile.py")...
        • @sunqiang,这就是 OP 要求的,对吧?主文件的绝对路径(当然,-m 告诉 Python 主文件是 cProfile.py)。
        猜你喜欢
        • 1970-01-01
        • 2011-02-07
        • 2010-10-14
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        相关资源
        最近更新 更多