4

自动完成在 a 上找到的第一个方法pathlib.Pathabsolute().

它似乎只是在开头添加 Path.cwd()

>>> from pathlib import Path
>>> path = Path('./relative/path') / '../with/some/../relative/parts'
Path('relative/path/../with/some/../relative/parts')
# calling absolute...
>>> absolute_path = path.absolute()
Path('/[current_dir]/relative/path/../with/some/../relative/parts')
# does the same as prepending cwd at the start
>>> Path.cwd() / path
Path('/[current_dir]/relative/path/../with/some/../relative/parts')

但是,Path.absolute()未在pathlib 文档中列出。

将此与Path.resolve()进行比较,后者的作用相反(替换相关部分但不前置cwd)并 记录在案。

我可以使用absolute()还是应该避免使用它?

4

1 回答 1

4

不。

至少在 Python 3.8 版之前,您应该避免使用Path.absolute().

根据错误报告中关于缺少文档的讨论, absolute()没有经过测试,因此没有正式宣传。事实上,它甚至可能在 Python 的未来版本中被删除。

因此,仅使用它会更安全Path.cwd()

>>> # make path absolute if it isn't already
>>> path = Path.cwd() / path
Path('/[current_dir]/relative/path/../with/some/../relative/parts')

没有必要使用Path.is_absolute()事先检查,因为cwd() / path不会改变已经是绝对的路径。

于 2017-08-11T07:24:27.360 回答