在扩展名之前为完整路径名添加后缀

Adding a suffix to a full path's name, before the extension

我正在从 os.path to pathlib.Path 中移出我的一些代码,发现总体上它要好得多。

在特定任务中,我发现实际上 os.path 使用起来可能更舒服。我想从给定的路径创建一个新路径,方法是在其名称中添加一个后缀并保持相同的根和扩展名。例如,来自:

/a/b/c/file.txt

我想得到:

/a/b/c/file_test.txt

使用 os.path,这可以通过 splitext:

轻松完成
>>> import os
>>> path = "/a/b/c/file.txt"
>>> base, ext = os.path.splitext(path)
>>> base + "_test" + ext
'/a/b/c/file_test.txt'

但是,检查 pathlib's docs, I found with_name and with_suffix 得到类似的东西:

>>> from pathlib import Path
>>> path = Path("/a/b/c/file.txt")
>>> path.with_suffix('').with_name(path.stem + "_test").with_suffix(path.suffix)
PosixPath('/a/b/c/file_test.txt')

我认为这比 os.path 版本差得多。

pathlib 是否有更好、更简洁的方法来实现此目的?

在找到 this answer 关于向路径添加另一个 扩展名 之后,我发现更简洁的方法是:

>>> path = Path("/a/b/c/file.txt")
>>> path.parent / (path.stem + "_test" + path.suffix)
PosixPath('/a/b/c/file_test.txt')

混合使用您的一些方法,您还可以:

from pathlib import Path

path = Path("/a/b/c/file.txt")
path.with_name(path.stem + '_test' + path.suffix)
# PosixPath('/a/b/c/file_test.txt')