Python pathlib создает каталоги, если они не существуют

Если бы я хотел указать путь для сохранения файлов и создания каталогов, которые не существуют по этому пути, возможно ли это сделать с помощью библиотеки pathlib в одной строке кода?

4 ответа

Решение

Да это Path.mkdir:

pathlib.Path('/tmp/sub1/sub2').mkdir(parents=True, exist_ok=True)

Добавление к ответу Вима. Если в конце вашего пути есть файл, который вы не хотите делать каталогом.

т.е. '/existing_dir/not_existing_dir/another_dir/a_file'

Затем вы используете PurePath.parents. Но приятно то, что, поскольку Пути наследуют атрибуты Чистых Путей, вы можете просто сделать

      filepath = '/existing_dir/not_existing_dir/another_dir/a_file'
pathlib.Path(filepath).parents[0].mkdir(parents=True, exist_ok=True)

Это дает дополнительный контроль в случае, если путь уже существует:

path = Path.cwd() / 'new' / "hi" / "there"
try:
    path.mkdir(parents=True, exist_ok=False)
except FileExistsError:
    print("Folder is already there")
else:
    print("Folder was created")

Универсальная функция для создания несуществующих каталогов/файлов.

      def check_and_create_path(self, path: Path):
        path_way = path.parent if path.is_file() else path

        path_way.mkdir(parents=True, exist_ok=True)

        if not path.exists():
            path.touch()
Другие вопросы по тегам