在一个目录下创建多个文件夹
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)
我想在它们内部创建多个文件夹。如果我有 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)