Python - 创建带有多个子文件夹的文件夹

5

我需要创建一个包含多个子文件夹的文件夹列表,这些文件夹不是嵌套的。 我已经使用了

os.makedirs('folder/subfolder')

创建一个文件夹和一个子文件夹,但我只能创建多个嵌套文件夹:
os.makedirs('folder/subfolder1/subfolder2/subfolder3')

sub3嵌套在sub2中,而sub2又嵌套在sub1中。我希望sub1、sub2和sub3都能一起嵌套在“文件夹”中(一个文件夹内有3个子文件夹)。我尝试过

os.makedirs('folder/(subfolder1, subfolder2)')

但这只会创建一个名为“(subfolder1, subfolder2)”的文件夹。有谁知道正确的语法是什么?使用makedirs函数是否可能实现这一点?

3个回答

15

使用循环:

for i in range(1,100):
    os.makedirs(os.path.join('folder', 'subfolder' + str(i)))

或者,如果你的文件夹名称在一个 list 中:

subfolder_names = []
for subfolder_name in subfolder_names:
    os.makedirs(os.path.join('folder', subfolder_name))

p.s.

若要忽略已存在的文件夹。

os.makedirs('/path/to/dir', exist_ok=True)

为什么不使用“子文件夹”和“子文件夹”? - Peter Wood
我认为更加描述性(只有“subfolder”可能是任何东西; 一个句柄,一个ID等)。无论如何,它只是一个变量名! - Anmol Singh Jaggi
太棒了,这个可行。我认为我需要两个循环来创建每个文件夹,然后在每个文件夹中创建子文件夹列表。 - jredd
我怎样可以创建另一个层级的子文件夹?我的意思是,我想要创建这样的结构:folder/(subfolder_1, subfolder_2, subfolder_3),其中括号内的子文件夹位于同一第二层级别,然后 subfolder_1/(subfolder_1.1, subfolder_1.2)subfolder_2/(subfolder_2.1, subfolder_2.2)subfolder_3/(subfolder_3.1, subfolder_3.2) - Riccardo

2
你不能像那样一次完成它。只需将一个调用放在另一个后面即可:
os.makedirs("folder/subfolder1")
os.makedir("folder/subfolder2")

糟糕,我需要在大约100个文件夹中创建子文件夹。我本来希望这会更快一些。 - jredd
你可以使用循环来加快速度。for subfolder in subfolders: os.makedir(os.path.join("folder", subfolder)) - zondo

2
你可以使用列表推导式进行循环,每次迭代使用os.mkdir创建目录,并将其命名为将基路径与给定目录名称连接的结果。
import os

[os.mkdir(os.path.join("/folder", "subdir{}".format(i))) for i in range(100)]

你可以稍微解释一下吗? - David Ferenczy Rogožan
@dawid-ferenczy 当然可以。这是一个列表推导式,使用了来自os库的两个嵌套方法。http://python-3-patterns-idioms-test.readthedocs.org/en/latest/Comprehensions.html - tuned
1
不好意思,我的意思是你能否编辑你的答案并在那里添加一些解释(比“这是一个列表推导式”更好一点)。这不是为了我,而是为了防止答案在低质量帖子审核中被删除,也是为了其他人。Stack Overflow用户不应该只是复制和粘贴答案,而是要理解问题并能够自己解决它。但这意味着他们需要一些解释。 - David Ferenczy Rogožan
我理解并且很抱歉,但是系统不允许我编辑答案。 - tuned
它不允许编辑自己的答案,对吧?这很奇怪。我想知道原因是什么... - David Ferenczy Rogožan
1
是的,又有另一个用户没有关闭他的编辑表单。现在我可以进行编辑了。 - tuned

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接