Python相对路径问题

时间:2014-03-29 16:47:39

标签: python path directory

我正在尝试创建一些辅助函数,它们会根据相对路径给我一个文件夹:

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

我错过了什么?

2 个答案:

答案 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(),您可以删除最后一个目录。