有没有一种惯用的方法可以使用 Python 的 Pathlib 添加扩展?
Is there an idiomatic way to add an extension using Python's Pathlib?
我正在使用 Python 的 Pathlib,我想使用
p = Path('/path/to/foo')
然后尝试几个不同的扩展。我可以
for ext in ['.txt', '.md', '.note']
filename = Path(str(p) + ext)
但这感觉有点尴尬。有更好的方法吗?
with_suffix
方法将 return 具有不同扩展名的新路径,更改现有扩展名或添加新扩展名。来自文档的示例:
>>> 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)
。
您可以使用 pathlib3x - 它提供了最新的向后移植(在撰写此答案的日期 Python 3.10.a0) Python pathlib 用于 Python 3.6 或更新版本,以及一些额外的功能,例如 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')
上找到它
免责声明:我是 pathlib3x 库的作者。
我正在使用 Python 的 Pathlib,我想使用
p = Path('/path/to/foo')
然后尝试几个不同的扩展。我可以
for ext in ['.txt', '.md', '.note']
filename = Path(str(p) + ext)
但这感觉有点尴尬。有更好的方法吗?
with_suffix
方法将 return 具有不同扩展名的新路径,更改现有扩展名或添加新扩展名。来自文档的示例:
>>> 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)
。
您可以使用 pathlib3x - 它提供了最新的向后移植(在撰写此答案的日期 Python 3.10.a0) Python pathlib 用于 Python 3.6 或更新版本,以及一些额外的功能,例如 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')
上找到它
免责声明:我是 pathlib3x 库的作者。