我有一个函数,它返回我通过常量名称查找的特定父项的完整路径。我目前正在使用 和 字符串作为路径,所以现在这是用正则表达式完成的。os.path
例如,我想要的是一个能够得到的常量: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
注意:如示例所示,我不想依赖双方的任何固定位置。
我尝试了2种方法,但都感觉有点笨拙:
使用这些部件以查找正确的父元素:
>>> 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')
使用这些部件并连接相关部件:
>>> path = "/root/a/b/c/d/e"
>>> parts = Path(path).parts
>>> Path(*parts[:parts.index('d')+1])
PosixPath('/root/a/b/c/d')
我会说第二个似乎是合理的,但是,我的问题是:有没有更直接的,悸动式的方法来实现这一目标?重复索引和切片感觉效率低下,而且相当混乱。parents
附言:如果路径中不存在该部分,则足以引发异常或任何指标(现在我用上面的代码包装)。indextry/except
慕姐4208626
慕的地8271018
相关分类