如何获取正在执行的文件的目录名称,即使我正在从其目录外部执行文件?
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。有一些特定于应用程序的微妙细节。
我不是在寻找 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。有一些特定于应用程序的微妙细节。