2014-03-29 75 views
2

我試圖創造一些輔助功能,這將使我的文件夾,基於相對路徑:Python的相對路徑問題

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

那麼相對於'dev \ project'是* expected *路徑呢?具有這些功能的文件位於何處? –

+1

您發佈的代碼不會輸出任何內容...也請避免使用「..」表示父目錄,因爲這不是可移植的。改爲使用'os.path.pardir'。 – Bakuriu

+0

您的'get_lib_dir_path'和'get_ffmpeg_dir_path'返回*目錄名*,所以''c:\\ dev \\ project \\ src''和''c:\\ dev \\ project \\ src \\ lib'' , 分別;您在那裏使用了錯誤的函數名稱。 –

回答

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(),你砍掉最後一個目錄。

+0

哇...不能相信我錯過了... – Jeff

1

我想這是因爲你返回dirname而不是abspath的最後兩個值。