Python创建多层文件夹目录:mkdirs一行建完整路径
用Python pathlib.mkdir自动创建多层嵌套目录,支持已存在不报错,适合脚本初始化输出目录,完整可运行代码。
场景痛点
脚本要把结果输出到2026年/9月/14日/报表/这样的多层目录,手动一层层建文件夹要点四五次。如果脚本报错提示目录不存在,还得回头补建。用Python的mkdir(parents=True),一行代码把整条路径全部建好,不管中间缺多少层。
用到的库
pathlib # 标准库
完整代码
from pathlib import Path
def ensure_dir(path: str) -> Path:
"""
创建目录(含所有父目录),已存在则不报错
:return: Path对象
"""
p = Path(path)
# parents=True 自动创建缺失的父目录
# exist_ok=True 目录已存在时不抛异常
p.mkdir(parents=True, exist_ok=True)
return p
def create_project_dirs(base_dir: str, project_name: str) -> dict:
"""
一键创建项目所需的整套目录结构
"""
base = Path(base_dir) / project_name
dirs = {
"根目录": base,
"输入数据": base / "data" / "input",
"输出结果": base / "data" / "output",
"临时文件": base / "temp",
"日志": base / "logs",
"报表": base / "reports" / "2026" / "Q3"
}
for name, d in dirs.items():
d.mkdir(parents=True, exist_ok=True)
print(f"[就绪] {name}: {d}")
return dirs
if __name__ == "__main__":
# 示例:初始化一个新项目的完整目录结构
create_project_dirs("./workspace", "日报自动汇总")
# 也可以单独建任意深层目录
ensure_dir("/backup/2026/09/14/压缩包")
代码讲解
p.mkdir(parents=True, exist_ok=True):两个关键参数。parents=True表示如果父目录不存在就一路建下去;exist_ok=True表示目录已经存在时不抛FileExistsError。组合起来就是"没有就建,有就跳过"。Path(base_dir) / project_name:pathlib重载了/运算符,用斜杠拼路径比字符串拼接跨平台更稳,Windows和Linux都能用。- 目录字典:把整套项目结构定义成字典,遍历一遍全部建好。换项目名或换基础路径,只改参数就行。
ensure_dir是通用工具函数,任何脚本里需要确保目录存在时直接调用。
运行结果
运行后在./workspace/日报自动汇总/下创建完整目录树:
[就绪] 根目录: workspace/日报自动汇总
[就绪] 输入数据: workspace/日报自动汇总/data/input
[就绪] 输出结果: workspace/日报自动汇总/data/output
[就绪] 临时文件: workspace/日报自动汇总/temp
[就绪] 日志: workspace/日报自动汇总/logs
[就绪] 报表: workspace/日报自动汇总/reports/2026/Q3
注意事项
mkdir(parents=True)如果路径指向一个已存在的文件(不是目录),仍然会抛FileExistsError。写脚本前确认路径不冲突。- Windows下路径长度不能超过260字符(未开启长路径支持时),深层嵌套目录要注意。
- 跨盘符创建(如在Linux下写
D:/xxx)会失败,因为盘符是Windows概念。跨平台脚本用相对路径或环境变量。

更新时间:2026-09-14 21:22:05