首页 > 解决方案 > 是否有一种 pathlib 方法可以在另一条路径中找到一条路径的补码?

问题描述

给定两个 Python Pathlib 路径,其中一个是另一个(未知深度)的后缀,

x = Path("/a/b/c/d/e.ext")
y = Path("d/e.ext")

有没有一种“好”的方法来找到yin的补码x?即发现:

z = Path("/a/b/c")

我正在考虑一种与该方法相反的relative_to()方法,但无法在文档或其他 SO 问题中找到合适的东西。目前,我可以执行以下任一操作,但它们的可读性不强:

z = Path(*x.parts[:-len(y.parts)])
z = Path(str(x)[:-len(str(y))])

谢谢!

标签: pythonpathlib

解决方案


您可以将两个路径转换为str并删除子路径以检索补码:

>>> from pathlib import Path
>>> x = Path("/a/b/c/d/e.ext")
>>> y = Path("d/e.ext")

>>> Path(str(x).replace(str(y), ""))
PosixPath('/a/b/c')

如果子路径不在路径中,它将保持路径不变。


推荐阅读