Criar uma tree de pastas dinamicamente a partir de uma string

Eu estou trabalhando no código em que vou criar pastas e sub-pastas com base em uma seqüência recuperada do database. É dynamic; pode ser um nível, dois níveis ou dez.

Estou tentando replace os pontos por barras e criar a tree adequada, mas esse código abaixo não funcionará:

for x in i.publish_app.split('.'): if not os.path.isdir(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT) + x + '/'): os.mkdir(os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT) + x + '/') 

i.publish_app é, por exemplo, 'apps.name.name.another.name' .

Como eu posso fazer isso?

 os.makedirs(path[, mode]) 

Função de criação de diretório recursivo. Como mkdir (), mas faz com que todos os diretórios de nível intermediário precisem conter o diretório leaf. Gera uma exceção de erro se o diretório da folha já existir ou não puder ser criado. O modo padrão é 0777 (octal). Em alguns sistemas, o modo é ignorado. Onde é usado, o valor do umask atual é primeiro mascarado.

Direto dos docs .

Use os.makedirs() , há um exemplo se você precisa se comportar como mkdir -p .

Por que você não está apenas fazendo:

os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT,x,"")

(O último ,"" é adicionar um \ ou / no final, mas eu não acho que você precisa fazer um diretório)