Pathlib - присоединяйтесь к родителям - PullRequest
0 голосов
/ 31 мая 2018

Я играю с Pathlib и пытаюсь выяснить, есть ли простой способ сделать следующее - у меня есть группа путей, из которых я хочу извлечь первых 4 родителей и соединить эти 4 в путь.

В качестве альтернативы (если это возможно) я хотел бы присоединить всех родителей до того, как родитель передал заданного, например, c://d1//d2//known//d4//... здесь я хочу извлечь до //d4, то есть родителя сразу после«известный» родитель.

Я знаю, что мог бы просто пройтись по частям и соединиться с n-ным, но мне интересно, есть ли способ сделать что-то вроде следующего p.joinpath(p.parents[0:4]), p.joinpath(p.parents[0: 'known_index'+1]),или что-то самое питоническое.

Обновление:

Мне удалось присоединиться к nth с распаковкой кортежей print(p.joinpath(*p.parts[0:5])), есть предпочтительный способ, и мне все еще не удалось достичь цели альтернативного случая, упомянутого выше.

Обновление:

Я нашел вариант для альтернативного варианта print(p.joinpath(*p.parts[0: p.parts.index('PCB_236_237_ARM')+2]))

Я сейчас просто ищу наиболее питонские способы.

1 Ответ

0 голосов
/ 12 ноября 2018

Это выглядит достаточно питонно для меня:

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.

...