我正在尝试创建一些辅助函数,它们会根据相对路径给我一个文件夹:
def get_BASE_dir_path():
cur_dir = os.path.dirname(os.path.abspath(__file__))
BASE = os.path.abspath(os.path.join(cur_dir,"..",".."))
return BASE
def get_src_dir_path():
BASE = get_BASE_dir_path()
src_dir = os.path.abspath(os.path.join(BASE,"src"))
return src_dir
def get_lib_dir_path():
BASE = get_BASE_dir_path()
lib_dir = os.path.dirname(os.path.join(BASE,"src","lib"))
return lib_dir
def get_ffmpeg_dir_path():
BASE = get_BASE_dir_path()
ffmpeg_dir= os.path.dirname(os.path.join(BASE,"src","lib","ffmpeg"))
return ffmpeg_dir
但是,不知何故,当我打印函数时,我得不到正确的结果:
输出:
C:\dev\project
C:\dev\project\src
C:\dev\project\src
C:\dev\project\src\lib
我错过了什么?
答案 0 :(得分:1)
我想这是因为你为最后两个值返回dirname而不是abspath。
答案 1 :(得分:1)
问题出在这里,在函数get_lib_dir_path()
中lib_dir = os.path.dirname(os.path.join(BASE,"src","lib"))
应该是:
lib_dir = os.path.join(BASE,"src","lib")
在get_ffmpeg_dir_path()中也会发生同样的事情。通过调用dirname(),您可以删除最后一个目录。