在目录的每个子文件夹中创建一个文件夹?

时间:2018-11-16 14:52:03

标签: python loops

我要创建一个这样的文件夹:

import os
rootfolder = r'C:\Users\user\Desktop\mainf'
for path, subdirs, files in os.walk(rootfolder):
    for i in subdirs:
        os.mkdir('newfolder')

mainf包含100个空的子文件夹。我要在每个文件夹中创建一个名为new folder的文件夹。上面的代码不起作用。

2 个答案:

答案 0 :(得分:3)

os.mkdir('newfolder')尝试在当前目录中创建newfolder,而与循环变量无关。

您需要首先使用root和subdir加入,检查它是否不存在(因此您可以运行它多次)并根据需要创建:

full_path_to_folder = os.path.join(path,i,'newfolder')
if not os.path.exists(full_path_to_folder):
   os.mkdir(full_path_to_folder)

在评论中进行讨论之后,这似乎可行,但会无用地重复。 path包含扫描时的目录路径,因此不需要内部循环。只需忽略walk产生的最后两个参数并执行:

for path, _, _ in os.walk(rootfolder):
    full_path_to_folder = os.path.join(path,'newfolder')
    if not os.path.exists(full_path_to_folder):
       os.mkdir(full_path_to_folder)

答案 1 :(得分:0)

我会尝试os.makedirs(path/to/nested/new/directories, exist_ok=True)

这将创建目录以及介于两者之间的所有必要目录。

此外,当您遍历目录时,请查看os.scandir(path/to/dir),因为它会返回确实方便使用的这些目录对象(例如,具有绝对路径,说是否存在,说是否是文件/目录)等)