web-dev-qa-db-ja.com

PythonのPathlibを使用して拡張機能を追加する慣用的な方法はありますか?

私はPythonのPathlibを使用しています。

p = Path('/path/to/foo')

そして、いくつかの異なる拡張機能を試してください。できます

for ext in ['.txt', '.md', '.note']
    filename = Path(str(p) + ext)

しかし、それは少しぎこちない感じです。これを行うより良い方法はありますか?

19
Wayne Werner

_with_suffix_ メソッドは、既存の拡張子を変更するか、新しい拡張子を追加して、異なる拡張子を持つ新しいパスを返します。ドキュメントの例:

_>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')
_

あなたの場合、p.with_suffix(ext)が仕事をします。

既存のサフィックスを削除するのではなく、既存のサフィックスの後にサフィックスを追加する必要がある場合は、p.with_suffix(p.suffix+ext)を使用できます。ただし、これは不格好で、Path(str(p)+ext)よりも優先するかどうかはわかりません。