4

のオートコンプリートによって最初に見つかったメソッド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()には記載されていません。

これを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 に答える