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
相关产品推荐
相关产品推荐

