2011-01-20 57 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真的是一些东西:) – 2011-01-20 22:35:11

1

为什么你不只是在做:

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

(最后,""是在末尾添加一个\/,但我不认为你需要它做一个目录)

3

使用os.makedirs(),有一个example如果你需要它的行为像mkdir -p