我正在将一些代码从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_name
和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
是否有更好、更清洁的方法来实现这一点?
混合一些方法,您还可以执行以下操作:
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')