Python 批量创建文件夹
我正在尝试编写一个函数,它将创建一个文件夹和子文件夹列表 虽然我的代码如下所示,但我想知道是否有更好的方法来创建子文件夹?(请参见Python 批量创建文件夹,python,directory,mkdir,Python,Directory,Mkdir,我正在尝试编写一个函数,它将创建一个文件夹和子文件夹列表 虽然我的代码如下所示,但我想知道是否有更好的方法来创建子文件夹?(请参见createFolders功能行5及以后) 不是说子文件夹的命名将被更改,但目前我正在硬编码它,这可能是一个痛苦,如果我必须创建更多的主/子文件夹 import os directory = '/user_data/TEST' def createFolders(): mainItems = ['Project_Files', 'Reference', '
createFolders
功能行5及以后)
不是说子文件夹的命名将被更改,但目前我正在硬编码它,这可能是一个痛苦,如果我必须创建更多的主/子文件夹
import os
directory = '/user_data/TEST'
def createFolders():
mainItems = ['Project_Files', 'Reference', 'Images']
for mainItem in mainItems:
os.makedirs(directory + '/' + str(mainItem))
projDir = directory + '/' + str(mainItems[0])
projItems = ['scene', 'assets', 'renders', 'textures']
for projItem in projItems:
os.makedirs(projDir + '/' + str(projItem))
if not os.path.exists(directory):
print '>>> Creating TEST directory'
os.makedirs(directory)
else:
print '>>> TEST exists!'
createFolders()
任何建议都将不胜感激 根据makedirs的说法,递归目录创建函数是什么意思?它创建了一个您传递给它的完整路径。因此,您不必为子文件夹创建循环,只需创建所需的所有路径的列表,并将它们逐个传递给os.MakeDir,例如:
folders = ['/user_data/TEST/Project_Files/scene', '/user_data/TEST/Project_Files/assets', '/user_data/TEST/Project_Files/renders', '/user_data/TEST/Project_Files/textures']
for path in folders:
os.makedirs(path)
您应该使用
os.path.join
连接路径<代码>str是不必要的。可以使用嵌套列表定义子文件夹的结构:
import os
directory = '/user_data/TEST'
def create_folders(basedir, subfolders):
for subfolder in subfolders:
if isinstance(subfolder, (list, tuple)):
create_folders(os.path.join(basedir, subfolder[0]), subfolder[1])
else:
os.makedirs(os.path.join(basedir, subfolder))
create_folders(directory, [
('Project_Files', ['scene', 'assets', 'renders', 'textures']),
'Reference', 'Images'])
代码是否按预期工作?如果是这样的话,那么这个问题应该转移到Yep,只需要定义“叶”目录,很好地捕获。@Alexey这不是我想要的,因为这意味着我需要键入很多行来定义目录。但我明白你在这里想做什么。谢谢