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

Python创建年/月/日层级文件夹时上级已存在即中断问题咨询

问题根因

原代码将月份、日期路径的拼接和创建逻辑全部嵌套在「年文件夹不存在」的条件分支内,当年文件夹已存在时,该分支不会触发,后续月、日文件夹的创建逻辑自然不会执行。此外原代码还存在两处可优化点:

  • 缺少os模块导入,直接运行会抛出模块未找到的报错
  • 月份、日期未做补零处理,无法生成需求要求的08、26这类两位格式的目录名
解决方案

方案1:修正原有逻辑

import os
from datetime import datetime, timedelta  

def check_path():
    dt = datetime.today()
    year = str(dt.year)
    # 补零为两位格式
    month = str(dt.month).zfill(2)
    day = str(dt.day).zfill(2)
    
    # 年路径处理
    path = os.path.join(year)
    if not os.path.exists(path):
        os.mkdir(path)   
    
    # 月路径处理,移到年判断分支外独立执行
    path = os.path.join(path, month)
    if not os.path.exists(path):
        os.mkdir(path)      
    
    # 日路径处理,移到月判断分支外独立执行
    path = os.path.join(path, day)
    if not os.path.exists(path):
        os.mkdir(path)      

方案2:更简洁的递归创建方案

用Python内置的os.makedirs方法直接创建多层目录,自带的exist_ok=True参数会自动跳过已存在的目录,不需要手动写多层判断:

import os
from datetime import datetime

def check_path():
    dt = datetime.today()
    # 直接拼接完整路径,自动补零
    dir_path = os.path.join(str(dt.year), f"{dt.month:02d}", f"{dt.day:02d}")
    # 递归创建目录,已存在时不会抛出异常
    os.makedirs(dir_path, exist_ok=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:30:02