如何获取正在执行的文件的目录名称,即使我正在从其目录外部执行文件?

How do I get the directory name of the file that's being executed, even when I'm executing the file from outside of it's directory?

我不是在寻找 os.getcwd(),因为这似乎 return 您在执行脚本时的位置。

如果我在 /Users/jo/Documents/ 中,并且我执行脚本:/Users/scripts/python/myScript.py,我可以从我的脚本中执行什么,以检查 /Users/scripts/python/siblingScript.py 是否存在?

所以我想我会先获取正在执行的文件的目录名,然后在其上调用(...).exists("siblingScript.py")

我该如何做对?

根据您是按完整路径名还是按相对路径执行 /Users/scripts/python/myScript.py,详细信息会略有不同。但在任何情况下,您都可以使用 os.path 中的函数。你可能想要isfile()而不是exists()

>>> import os.path
>>> p = os.path.dirname("/Users/scripts/python/myScript.py")
>>> p
'/Users/scripts/python'
>>> f = os.path.join(p, "siblingScript.py")
>>> f
'/Users/scripts/python/siblingScript.py'
>>> os.path.isfile(f)
True

如果您通过相对路径执行 myScript.py,请使用 abspath()。

>>> os.getcwd()
'/home/msherrill/test/Users/jo/Documents'
>>> p = os.path.dirname("../../scripts/python/myScript.py")
>>> p
'../../scripts/python'
>>> os.path.abspath(p)
'/home/msherrill/test/Users/scripts/python'

您应该阅读针对您的 Python 版本的 Python os.path docs。有一些特定于应用程序的微妙细节。