批量创建文件夹
Batch creation of folders
我正在尝试编写一个函数脚本,它将在其中创建一个文件夹和子文件夹列表。
虽然我的代码如下,但我想知道是否有更好的方法让我创建子文件夹? (参见 createFolders
函数第 5 行起)
并不是说子文件夹的命名会改变,但目前我正在对其进行硬编码,如果我必须创建更多,这可能会很痛苦 main/sub-folders...
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()
如有任何建议,我们将不胜感激!
根据 documentation makedirs 是 递归目录创建函数 什么意思它会创建您传递给它的完整路径。因此,与其为子文件夹创建循环,不如创建一个包含所有所需路径的列表,然后将它们一一传递给 os.makedirs,例如:
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'])
我正在尝试编写一个函数脚本,它将在其中创建一个文件夹和子文件夹列表。
虽然我的代码如下,但我想知道是否有更好的方法让我创建子文件夹? (参见 createFolders
函数第 5 行起)
并不是说子文件夹的命名会改变,但目前我正在对其进行硬编码,如果我必须创建更多,这可能会很痛苦 main/sub-folders...
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()
如有任何建议,我们将不胜感激!
根据 documentation makedirs 是 递归目录创建函数 什么意思它会创建您传递给它的完整路径。因此,与其为子文件夹创建循环,不如创建一个包含所有所需路径的列表,然后将它们一一传递给 os.makedirs,例如:
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'])