os.makedirs может помочь - он превращает все промежуточные каталоги вплоть до «конечного», который вы указываете.
Другая проблема (генерирование всего «одного изстолбец A, один из столбца B, ... "комбинации) лучше всего рассматривать как проблему" подсчета в смешанных базах "- примерно, что-то вроде ...:
choices = [ ['Weights', 'Noweights'],
['Male', 'Female'],
['Caucasian', 'AfricanAmerican', ...
...
]
Ls = [len(x) for x in choices]
ct = [0] * len(Ls)
while True:
p = [c[i] for i, c in zip(ct, choices)]
os.makedirs(os.path.join(p))
n = -1
while n > -len(Ls):
ct[n] += 1
if ct[n] < Ls[n]: break
ct[n] = 0
n -= 1
else:
break
itertools.product
это современный и лаконичный подход к генерации всех выборок «один из столбца А, и т. д.», и то, что я бы посоветовал в производственном программном обеспечении - просто:
for p in itertools.product(*choices):
os.makedirs(os.path.join(p))
может заменить весь вышеприведенный код(!).Я думаю, что также стоит знать о подходе «подсчет в смешанных базах» на уровне более низкой абстракции, потому что он пригодится во многих случаях (включая случаи, когда кто-то застревает с использованием выпуска Python < 2.6
; -).