有没有一种惯用的方式使用Python的Pathlib添加扩展?

时间:2018-07-16 16:38:10

标签: python python-3.x pathlib

我正在使用Python的Pathlib,我想采用类似的方法

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

然后尝试几个不同的扩展名。我能做

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

但是感觉有点尴尬。有更好的方法吗?

2 个答案:

答案 0 :(得分:9)

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)可以胜任。

答案 1 :(得分:4)

您可能会使用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')


您可以在githubPyPi上找到它


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