2011-01-20 2 views
1

Я работаю над кодом, в котором я создам папки и подпапки на основе строки, полученной из базы данных. Это динамично; это может быть один уровень, два уровня или десять.Динамическое создание дерева папок из строки

Я пытаюсь заменить точки с косой чертой и создать правильное дерево, но этот код ниже не будет делать работу:

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 является, например, 'apps.name.name.another.name'.

Как я могу это сделать?

ответ

14
os.makedirs(path[, mode]) 

Рекурсивные функции создания каталога. Как и mkdir(), но делает все необходимых справочников промежуточного уровня , чтобы содержать каталог листьев. Вызывает исключение ошибки, если каталог каталога уже существует или не может быть создан . Режим по умолчанию - 0777 (восьмеричный). В некоторых системах режим игнорируется. Когда он используется, текущее значение umask сначала маскируется.

Справа от the docs.

+1

спасибо помощнику. Я не знаю, как я это пропустил, Python - это действительно что-то :) –

1

Почему вы не просто делаете:

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

(Последний ,"" является добавление \ или / в конце, но я не думаю, что вам это нужно сделать каталог)

3

Используйте os.makedirs(), есть example, если вам нужно, чтобы он вел себя как mkdir -p.

Смежные вопросы