从字符串动态创建文件夹树
我正在写一段代码,这段代码会根据从数据库中获取的字符串来创建文件夹和子文件夹。这个过程是动态的,可能只需要一层,也可能需要两层,甚至十层。
我想把字符串中的点替换成斜杠,以便创建正确的文件夹结构,但下面的代码无法实现这个功能:
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'
。
我该怎么做呢?
4 个回答
1
你为什么不直接这样做呢:
os.path.join(settings.MEDIA_ROOT, PATH_CSS_DB_OUT,x,"")
(最后的 ,""
是为了在结尾加一个 \
或 /
,不过我觉得你在创建目录的时候不一定需要这个)
4
使用 os.makedirs()
这个函数。如果你想让它的行为像 mkdir -p
一样,可以参考这个 例子。
15
os.makedirs(path[, mode])
这是一个递归创建目录的函数。它的功能类似于mkdir(),但是可以一次性创建所有需要的中间目录,直到最终的目标目录。如果目标目录已经存在,或者无法创建,就会抛出一个错误。默认的权限设置是0777(八进制)。在某些系统上,这个权限设置可能会被忽略。在使用时,当前的umask值会先被屏蔽掉。
直接来自于官方文档。