首页 > 解决方案 > 在python中将相对路径添加到绝对路径

问题描述

假设我有一个绝对路径和一个相对路径

abspath = os.path.abspath(__file__)
relpath = '../../folder/file'

如何在没有../..s 的情况下将这两条路径“添加”在一起,是否有这样做的模块?到目前为止我找不到任何东西。我正在考虑一种格式,例如:

mypath = some_module.function(abspath, relpath)

而不是做

mypath = os.path.join(os.path.dirname(os.path.dirname(abspath))), folder, file)

我认为这太麻烦了。

标签: pythonfilenamesrelative-path

解决方案


您可以join使用它们并使用normpath

os.path.normpath(os.path.join(abspath, relpath))

来自normpath文档:

通过折叠冗余分隔符和上层引用来规范化路径名,以便 A//B、A/B/、A/./B 和 A/foo/../B 都变为 A/B。


从 Python 3.4 开始,您也可以使用pathlib模块:

from pathlib import Path

abspath = Path('/home/xxxx/yyy')
relpath = Path('../../folder/file')
(abspath / relpath).resolve()
# PosixPath('/home/xxxx')

推荐阅读