Как удалить первую часть пути?

#python #path

Вопрос:

Допустим , у меня есть путь fodler1/folder2/folder3 , и я заранее не знаю имен папок.

Как я могу удалить первую часть этого пути, чтобы получить только folder2/folder3 ?

Ответ №1:

Использовать str.split с 1 в качестве maxsplit аргумента:

 path = "folder1/folder2/folder3"

path.split("/", 1)[1]
# 'folder2/folder3'
 

Если там ничего / нет, вы могли бы быть в большей безопасности с:

 path.split("/", 1)[-1]  # pick the last of one or two tokens
 

но это зависит от вашей желаемой логики в этом случае.
Для лучшей переносимости в разных системах вы можете заменить косую "/" черту на os.path.sep :

 import os

path.split(os.path.sep, 1)[1]
 

Ответ №2:

Вы можете использовать pathlib.Path для этого:

 from pathlib import Path

p = Path("fodler1/folder2/folder3")
 

И либо объединить все parts , кроме первого:

 new_path = Path(*p.parts[1:])
 

Или создайте путь relative_to в первой части:

 new_path = p.relative_to(p.parts[0])
 

Этот код не требует знания разделителя путей и работает для всех pathlib поддерживаемых платформ (Python >= 3.4).