python - 在扩展名之前为完整路径的名称添加后缀
问题描述
我正在将我的一些代码从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,我发现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')
推荐阅读
- elasticsearch - 安装 mojave 后,Elasticsearch 停止工作
- python - 按数百/个对列表进行排序
- git - grep 排除超字符串
- python - Python-从具有不对称误差条的正态分布中提取
- docker - 如何使 kubernetes docker secret 工作?
- sql-server - 查询 SQL Server 的 bcp 问题
- c++ - assimp,如何保存压缩的 assbin 文件
- spring-mvc - 春天 5
- javascript - FLOW:如何使 Flow 与 Array.prototype.find() 的回调一起工作
- python-3.x - Pytest:如何在测试应用程序时创建模拟套接字服务器以伪造响应