Динамически создавать дерево папок из строки - PullRequest
1 голос
/ 21 января 2011

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

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

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'.

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

Ответы [ 3 ]

15 голосов
/ 21 января 2011
os.makedirs(path[, mode])

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

Прямо с Документы .

4 голосов
/ 21 января 2011

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

1 голос
/ 21 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...