2017-08-11 59 views
3

通過自動完成發現一個pathlib.Path第一種方法是absolute()我可以使用無證方法pathlib.Path.absolute()?

似乎在一開始只是在前面加上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 documentation上市。

比較這對Path.resolve(),它執行相反的(取代的相對的部分,但不預置cwd)和記載。

我可以用absolute()或者我應該避免呢?

回答

3

至少直到Python版本3.6,你應該避免使用Path.absolute()

根據the bug report about the missing documentation討論, absolute()沒有經過測試,因此沒有正式公佈。事實上,它可能甚至將在未來的Python釋放刪除。

因此,使用Path.cwd()代替它更安全。

如果您不確定是否真的需要這樣做,您可以使用Path.is_absolute()進行檢查。

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