在一个目录下创建多个文件夹

create multiple folders in a directory

我想在它们内部创建多个文件夹。如果我有 3 个文件夹,我想在我的桌面上相互嵌套。我想创建目录 'C:/Users/User/Desktop/folder_a/folder_b/folder_c/',我目前这样做的方式是多次调用 os.path.exists()os.mkdir()。有没有一种方法可以做到这一点而不必多次调用它们?

import os

DIR = 'C:/Users/User/Desktop/folder_a/folder_b/folder_c/'
if not os.path.exists(DIR):
    os.mkdir(DIR)
DIR = DIR + 'folder_b/'
if not os.path.exists(DIR):
    os.mkdir(DIR)
DIR = DIR + 'folder_c/'
if not os.path.exists(DIR):
    os.mkdir(DIR)

所以我们只需要做一项检查 :) 因为如果 folder_a 不存在,folder_b 就不可能存在。

这将我们带到了第二种情况。为此,我们遗漏了 exist_ok=True 以再次进行适当的检查,但包含 folder_b 和 'folder_c'(如果两者都不存在)。

选项 1:

from os import (
    makedirs,
    path,
)

dir_path = 'C:/Users/User/Desktop/folder_a/{}'

if path.exists(dir_path):
    makedirs(
        dir_path.format(
            'folder_b/folder_c/',
        )
    )

选项 2:

from os import makedirs

dir_path = 'C:/Users/User/Desktop/folder_a/folder_b/folder_c'
makedirs(dir_path)

我给你写了一个递归函数:

import os

DIR = './folder_a/folder_b/folder_c/'

def make_nested_folders(DIR):
  print(DIR)
  if "/" in DIR:
    DIR, last = DIR.rsplit("/", 1)
    make_nested_folders(DIR)
  else:
    last = DIR
  if last and not os.path.exists(last):
    os.mkdir(last)

make_nested_folders(DIR)