2013-10-22 271 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即可。