从字符串动态创建文件夹树

2 投票
4 回答
10595 浏览
提问于 2025-04-16 10:20

我正在写一段代码,这段代码会根据从数据库中获取的字符串来创建文件夹和子文件夹。这个过程是动态的,可能只需要一层,也可能需要两层,甚至十层。

我想把字符串中的点替换成斜杠,以便创建正确的文件夹结构,但下面的代码无法实现这个功能:

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值会先被屏蔽掉。

直接来自于官方文档

撰写回答