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

如何用Python无需循环简洁实现类似Unix mkdir -p的嵌套多目录创建

Python 实现类shell mkdir -p a/b/c/{d,e,f} 效果的解决方案

问题原因说明

你之前的写法只能创建单个目标路径,而Unix shell的mkdir -p a/b/c/{d,e,f}实际是shell先将大括号语法展开为a/b/c/d、a/b/c/e、a/b/c/f三个独立路径,再调用mkdir批量创建,Python原生的os.makedirs和pathlib.Path.mkdir都没有内置shell大括号语法解析能力,所以无法直接实现对应效果。

方案1:标准库无依赖实现(无显式循环)

不需要引入第三方库,也不需要写多行for循环代码块,用生成器表达式一行即可完成批量创建:

from pathlib import Path

# 按需修改基础路径和子目录列表即可
any((Path("a/b/c") / subdir).mkdir(mode=0o755, parents=True, exist_ok=True) for subdir in ["d", "e", "f"])

说明:any仅用于消费生成器执行创建逻辑,无实际返回值意义;parents=True会自动创建不存在的上层目录,exist_ok=True避免目录已存在时报错。

方案2:完全复刻shell大括号写法(需少量第三方依赖)

如果要完全复用shell风格的大括号路径写法,可以安装braceexpand库实现语法解析,代码更简洁:

  1. 先安装依赖:pip install braceexpand
  2. 执行创建:
from pathlib import Path
from braceexpand import braceexpand

any(Path(p).mkdir(mode=0o755, parents=True, exist_ok=True) for p in braceexpand("a/b/c/{d,e,f}"))

该写法支持任意层级的大括号嵌套,和shell的大括号展开逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:06:02