2017-08-11 8 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に記載されていません。

は反対の(相対的な部品交換が、cwdを付加していない)とが文書あるんれ、Path.resolve()にこれを比較してください。

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') 
関連する問題