Python处理主AND相对目录



我正试图从用户输入中获得绝对路径,这样我的脚本中就不会有歧义。我需要能够同时处理路径~/Documents/repos/project./project

os.pathpathlib这样的库能够解决这两种情况——例如,在pathlib中,expanduser解决~resolve()计算出相对路径,但两者都不能同时解决这两个问题。

为了详细说明,expanduser将剥离任何周期的相对路径,而resolve()将错误地解析包含~的路径。这意味着将两者结合起来会给我留下一条不正确的道路。

我可以简单地用Path.home()替换~,然后解析路径,但我想知道是否存在";"更正确";,或者实现这一点的更简单的方式。

您可以同时使用os.path.abspathos.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')

最新更新