You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Django Python创建文件夹及子文件夹(附代码示例)

Django运行时动态创建文件夹及嵌套子文件夹实现方法

这个场景不需要找Django专属API,Django本身没有重复封装文件系统操作能力,直接用Python标准库的文件路径操作方法就可以实现,和普通Python脚本创建目录的逻辑基本一致,只需要注意路径拼接不要硬编码、做好异常兼容即可。

核心实现要点

  • 路径拼接优先使用Django配置项BASE_DIR(项目根路径)、MEDIA_ROOT(媒体文件根路径)作为基准,不要写死系统绝对路径,避免跨环境部署时路径失效
  • 创建目录时开启「目录已存在不报错」参数,避免重复执行逻辑时抛出异常
  • 创建多层嵌套目录时直接使用递归创建能力,不需要逐层手动判断、逐层创建

代码示例

兼容性写法(适配所有Python3版本,基于os模块)

import os
from django.conf import settings

def init_runtime_dirs():
    # 定义要创建的根目录,示例为媒体目录下的user_uploads文件夹
    root_path = os.path.join(settings.MEDIA_ROOT, "user_uploads")
    # 定义根目录下需要创建的一级子文件夹
    child_dir_list = ["avatar", "attachment", "temp_export"]

    # 递归创建根目录,exist_ok=True表示目录已存在时不触发报错
    os.makedirs(root_path, exist_ok=True)
    # 批量创建一级子目录
    for dir_name in child_dir_list:
        child_path = os.path.join(root_path, dir_name)
        os.makedirs(child_path, exist_ok=True)

    # 多层嵌套目录(如 user_uploads/category/2024/09)直接拼完整路径调用即可
    # makedirs会自动创建路径中所有不存在的父级目录
    nested_path = os.path.join(root_path, "category", "2024", "09")
    os.makedirs(nested_path, exist_ok=True)

简洁写法(Python3.4+支持,基于pathlib模块)

Django 3.1及以上版本中settings.BASE_DIR、settings.MEDIA_ROOT默认是Path对象,用pathlib操作路径更简洁:

from pathlib import Path
from django.conf import settings

def init_runtime_dirs():
    root_path = settings.MEDIA_ROOT / "user_uploads"
    child_dir_list = ["avatar", "attachment", "temp_export"]

    # parents=True开启递归创建父目录,exist_ok=True表示目录存在不报错
    root_path.mkdir(parents=True, exist_ok=True)
    for dir_name in child_dir_list:
        (root_path / dir_name).mkdir(parents=True, exist_ok=True)

    # 多层嵌套目录创建
    nested_path = root_path / "category" / "2024" / "09"
    nested_path.mkdir(parents=True, exist_ok=True)

注意事项

  • 启动Django服务的系统用户,必须对目标路径的父级目录拥有写入权限,否则会抛出PermissionError
  • 如果创建的目录用于存放用户上传的媒体文件,记得配置好Django的MEDIA路由,否则目录下的文件无法通过HTTP访问
  • 运行时生成的动态文件不要放在Django项目源码目录下,统一放到MEDIA_ROOT或者单独配置的数据目录,避免误提交到代码仓库

内容的提问来源于stack exchange,提问作者abby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 16:18:19