将非目录组件附加到 Python 路径的最简单方法?
Easiest way to append non-directory component to Python Path?
几个 SO 问题询问如何将 目录 附加到 pathlib.Path 对象。 不是这个问题。
我想使用 Path
对象作为单个目录中一系列文件的前缀,如下所示:
2022-01-candidates.csv
2022-01-resumes.zip
2022-02-candidates.csv
2022-02-resumes.zip
理想情况下,我会为 2022-01
和 2022-02
组件构建 Path 对象,然后将 -candidates.csv
和 -resumes.zip
附加到每个组件。
不幸的是,Path
似乎只理解附加 子目录 ,而不是对现有路径名的扩展。
我看到的唯一解决方法是 p.parent / (p.name + "-candidates.csv")
。虽然这还不错,但它很笨拙,这种模式对我来说很常见。我想知道我是否缺少更精简的方法。 (例如,为什么没有 +
连接运算符?)
Path.with_suffix()
要求后缀以点开头,这样行不通。
如您所述,使用除法运算符总是会创建一个 sub-directory,而 with_suffix
仅用于扩展。您可以使用 with_path
来编辑文件名:
import pathlib
path = pathlib.Path("2022-01")
path.with_name(f"{path.name}-candidates.csv")
几个 SO 问题询问如何将 目录 附加到 pathlib.Path 对象。 不是这个问题。
我想使用 Path
对象作为单个目录中一系列文件的前缀,如下所示:
2022-01-candidates.csv
2022-01-resumes.zip
2022-02-candidates.csv
2022-02-resumes.zip
理想情况下,我会为 2022-01
和 2022-02
组件构建 Path 对象,然后将 -candidates.csv
和 -resumes.zip
附加到每个组件。
不幸的是,Path
似乎只理解附加 子目录 ,而不是对现有路径名的扩展。
我看到的唯一解决方法是 p.parent / (p.name + "-candidates.csv")
。虽然这还不错,但它很笨拙,这种模式对我来说很常见。我想知道我是否缺少更精简的方法。 (例如,为什么没有 +
连接运算符?)
Path.with_suffix()
要求后缀以点开头,这样行不通。
如您所述,使用除法运算符总是会创建一个 sub-directory,而 with_suffix
仅用于扩展。您可以使用 with_path
来编辑文件名:
import pathlib
path = pathlib.Path("2022-01")
path.with_name(f"{path.name}-candidates.csv")