我要创建一个这样的文件夹:
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
的文件夹。上面的代码不起作用。
答案 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)
,因为它会返回确实方便使用的这些目录对象(例如,具有绝对路径,说是否存在,说是否是文件/目录)等)