是否有使用Python的Pathlib添加扩展的惯用方法?

Way*_*ner 14 python python-3.x pathlib

我正在使用Python的Pathlib,我想采取类似的东西

p = Path('/path/to/foo')
Run Code Online (Sandbox Code Playgroud)

然后尝试几种不同的扩展.我可以

for ext in ['.txt', '.md', '.note']
    filename = Path(str(p) + ext)
Run Code Online (Sandbox Code Playgroud)

但这感觉有点尴尬.有一个更好的方法吗?

use*_*ica 16

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')
Run Code Online (Sandbox Code Playgroud)

在你的情况下,p.with_suffix(ext)会做的工作.

  • @MathieuLongtin:或`p.with_suffix(p.suffix +'。xyz')`。 (4认同)
  • 我发现 `Path(f'{p}.xyz')` 稍微好一些。 (3认同)

bit*_*nox 8

您可能会使用 pathlib3x - 它提供了最新的(在撰写此答案 Python 3.10.a0 之日)Python 3.6 或更高版本的 Python pathlib 的反向移植,以及一些附加功能,例如 append_suffix

>>> python -m pip install pathlib3x

>>> import pathlib3x as pathlib

>>> pathlib.Path('some_path').append_suffix('.ext')
PosixPath('some_path.ext')

>>> pathlib.Path('some_path.ext.ext2').append_suffix('.ext3')
PosixPath('some_path.ext.ext2.ext3')

>>> pathlib.Path('some_path.ext').append_suffix('.tar.gz')
PosixPath('some_path.ext.tar.gz')


Run Code Online (Sandbox Code Playgroud)

你可以在githubPyPi上找到它


免责声明:我是 pathlib3x 库的作者。