2013-10-22 179 views
0

我想從絕對路徑和相對絕對路徑:獲得絕對路徑

absolute1 = '/a/b/c/d.js' 
relative = '../../e.js' 
absolute2 = getAbsoluteFromAbsoluteAndRelative(absolute1, relative) 

在這個例子中absolute2應該是平等的'a/e.js'

如何寫getAbsoluteFromAbsoluteAndRelative方法?

更新: 我發現os.path.abspath,但它只有一個參數

回答

4

你絕對路徑仍然包含一個文件名,所以除去與os.path.dirname()獲得只是的目錄。

再加入兩個應用的結果:

os.path.normpath(os.path.join(os.path.dirname(absolute1), relative)) 

normpath標準化與它相對引用的路徑;例如,A/foo/../B變成A/B

演示:

>>> import os.path 
>>> absolute1 = '/a/b/c/d.js' 
>>> relative = '../../e.js' 
>>> os.path.normpath(os.path.join(os.path.dirname(absolute1), relative)) 
'/a/e.js' 
+0

打我吧。我不知道python所以不得不查找函數名稱。好答案。 – Dan

+0

的allmost OK:'>>> absolute1 = '/a/b/c/d.js' >>>相對=」 ../../e.js' >>> os.path.normpath(OS .path.join(absolute1,relative)) '/ a/b/e.js''。但'a/e.js'預計 –

+0

@efr:已經調整;我錯過了你的絕對路徑中還有一個文件名的事實。 –

0

嘗試absolute2 = os.path.join(os.path.dirname(absolute1), relative)

編輯:馬亭打我給它。將其包裝在os.path.normpath即可。