Подтвердить что ты не робот

Элегантный способ сделать все каналы в пути

Вот четыре пути:

p1=r'\foo\bar\foobar.txt'
p2=r'\foo\bar\foo\foo\foobar.txt'
p3=r'\foo\bar\foo\foo2\foobar.txt'
p4=r'\foo2\bar\foo\foo\foobar.txt'

Каталоги могут быть или не быть на диске. Каким будет самый элегантный способ создания каталогов в каждом пути?

Я думал об использовании os.path.split() в цикле и проверке для dir с os.path.exists, но я не знаю, что там лучший подход.

4b9b3361

Ответ 1

Вы ищете os.makedirs(), который делает именно то, что вам нужно.

В документации указано:

Рекурсивная функция создания каталога. Как и mkdir(), но делает все требуются каталоги промежуточного уровня чтобы содержать каталог листьев. Повышения исключение ошибки, если лист каталог уже существует или не может быть создан.

Потому что он терпит неудачу, если каталог листьев уже существует, вы захотите проверить существование до вызова os.makedirs().

Ответ 2

В Python 3.6+ вы можете:

import pathlib

path = pathlib.Path(p4)
path.parent.mkdir(parents=True, exist_ok=True)