在扩展名之前向完整路径的名称添加后缀



我正在将一些代码从os.path移动到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的文档,我找到了with_namewith_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是否有更好、更清洁的方法来实现这一点?

混合一些方法,您还可以执行以下操作:

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')

在找到向路径添加另一个扩展的答案后,我发现一种更干净的方法可以是:

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

相关内容

  • 没有找到相关文章

最新更新