3

我正在玩 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的事情。

更新:

我设法通过 tuple unpacking 加入到第 n 个print(p.joinpath(*p.parts[0:5])),是否有首选方法,但我仍然没有设法实现上述替代案例的目标。

更新:

我找到了“替代”案例的选项print(p.joinpath(*p.parts[0: p.parts.index('PCB_236_237_ARM')+2]))

我现在只是在寻找最 Pythonic 的方式。

4

1 回答 1

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自己的路径。

于 2018-11-12T01:05:49.867 回答