通过名称获取路径的特定父项

问题描述 投票:0回答:1

我正在尝试将代码从使用os.path移至使用os.path

我有一个函数,该函数通过常数名称返回我要查找的特定父级的完整路径。如前所述,我当前正在使用pathlib.Path和字符串作为路径,因此现在这是通过正则表达式完成的。

例如,我想要一个常数pathlib.Path能够得到:

os.path

:如示例所示,我不想从两侧依赖任何固定位置。

我尝试了两种方法,但都感觉有些笨拙:

  1. 使用parent = d来查找正确的/a/b/c/d/e --> /a/b/c/d /a/b/c/d/e/f --> /a/b/c/d /root/a/b/c/d/e --> /root/a/b/c/d 元素:

    parts
  2. 使用parts并连接相关的字符:

    parents

我想说第二个似乎合理,但是我的问题是:是否有更好的方法来实现这一目标?


P.S。如果路径中不存在该部分,则足以引发异常或任何指示符(现在,我将上面的parents换为>>> path = "/a/b/c/d/e/f" >>> parts = Path(path).parts >>> parent_index = len(parts) - 1 - parts.index('d') - 1 >>> Path(path).parents[parent_index] PosixPath('/a/b/c/d') 来包装代码)。

python python-3.x pathlib
1个回答
0
投票

您可以使用parts循环来继续向后搜索给定名称的父项:

parts

此输出:

>>> path = "/root/a/b/c/d/e"
>>> parts = Path(path).parts
>>> Path(*parts[:parts.index('d')+1])
PosixPath('/root/a/b/c/d')
© www.soinside.com 2019 - 2024. All rights reserved.