首页 > 解决方案 > 在扩展名之前为完整路径的名称添加后缀

问题描述

我正在将我的一些代码从os.pathto移动,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,我发现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

标签: pythonpython-3.xpathpathlib

解决方案


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

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

推荐阅读