我正在玩Pathlib并试图找出是否有一种简单的方法来执行以下操作 - 我有一组路径,我想从中提取前4个父项,并将这4个连接到路径中。
或者(如果可能的话)我想加入所有父母,直到父母通过一个给定的父母,例如,c://d1//d2//known//d4//...
在这里我想要提取到//d4
,即父母之后已知的'父节点。
我知道我可以循环遍历各个部分并加入到第n个部分,但我想知道是否有办法执行以下p.joinpath(p.parents[0:4])
,p.joinpath(p.parents[0: 'known_index'+1])
或其他任何操作大多数pythonic。
更新
我设法通过元组解包print(p.joinpath(*p.parts[0:5]))
加入到第n个,是否有一种首选方式,我仍然无法实现上述替代案例的目标。
更新
我找到了一个选项'替代'案例print(p.joinpath(*p.parts[0: p.parts.index('PCB_236_237_ARM')+2]))
我现在正在寻找最恐怖的方式。
答案 0 :(得分:1)
对我来说,这看起来足够pythonic:
p1 = pl.Path('c://d1//d2//known//d4//')
idx = p1.parts.index('known')
p2 = pl.Path(*p1.parts[:idx+1])
我使用pl.Path(*segments)
来加入片段,因为实例方法p.joinpath()
将片段附加到实例的p
自己的路径上。