Python 路径 - 处理主目录和相对目录

Python path - handling home AND relative directory

我正在尝试从用户输入中获取绝对路径,因此我的脚本中没有歧义。我需要能够处理 ~/Documents/repos/project./project.

这两个路径

os.pathpathlib 等库能够解决这两种情况 - 例如,在 pathlib 中,expanduser 解决 ~resolve() 找出相对路径,但两者都不能同时做。

具体来说,expanduser 将去除任何句点的相对路径,而 resolve() 将错误地解析包含 ~ 的路径。这意味着将两者结合起来会让我走上一条不正确的道路。

我可以简单地将 ~ 替换为 Path.home(),然后解析路径,但我想知道是否有“更正确”或更简单的方法来实现此目的。

可以一起使用os.path.abspath and os.path.expanduser

/var/tmp $ python
>>> from os.path import abspath, expanduser
>>> abspath(expanduser("./bar"))
'/var/tmp/bar'
>>> abspath(expanduser("~/foo"))
'/home/my.username/foo'

pathlib方法:

>>> PosixPath('./bar').expanduser().resolve()
PosixPath('/var/tmp/bar')
>>> PosixPath('~/foo').expanduser().resolve()
PosixPath('/home/my.username/foo')