相对路径错误取决于终端的当前文件夹

时间:2018-11-15 20:11:13

标签: python python-3.x macos

我一直试图在与文件一起使用的脚本中实现有可能运行我的程序,而与程序包所在的路径无关。 我发现使用此代码通常可以正常工作:

import os.path
file_path = os.path.dirname(__file__)
data_path = file_path + '/myfile's/path/'

如果从终端我尝试执行

python3 path/to/my/script/script.py

我没问题。但是,如果我尝试在当前文件夹中运行我的脚本,则该脚本位于(cd path / to / my / script /)中,并显示错误。声称/ myfile的/ path不是有效目录。 我认为我可以实现以下目标:

 file_path = os.path.dirname(__file__)
 if file_path:
    data_path = file_path + '/myfile's/path'
 else:
    data_path = 'myfile's/path'

这似乎很好,但是我想知道是否有一种规范化或更好的方式来处理可能尚未遇到的其他类型的错误。 谢谢;)

1 个答案:

答案 0 :(得分:0)

不是真的(这个问题实际上并不适合SO,但是这里有)

您需要这样做...但是当我这样做时,我倾向于将其抽象出来

def rel_path(*parts):
    BASE = os.path.dirname(__file__)
    return os.path.abspath(os.path.join(BASE,*parts))

然后我到处都使用此功能

my_path = rel_path("myfiles","path","example.jpg")
# /path/to/this/file/myfiles/path/example.jpg