如何递归创建目录?

275 投票
5 回答
289911 浏览
提问于 2025-04-16 17:38

有没有一种Python的方法可以递归地创建目录?我有这个路径:

/home/dail/

我想要创建

/home/dail/first/second/third

我可以递归地创建吗,还是必须一个一个目录地创建?

同样的,关于:

chmodchown,我可以递归地操作,而不用为每个文件或目录单独设置权限吗?

5 个回答

15

试试使用 os.makedirs 这个方法:

import os
import errno

try:
    os.makedirs(<path>)
except OSError as e:
    if errno.EEXIST != e.errno:
        raise
258

os.makedirs 是你需要的工具。如果你想用 chmodchown,你就得用 os.walk,然后自己对每个文件和文件夹进行操作。

414

从 Python 3.2 开始,你可以这样做:

import os
path = '/home/dail/first/second/third'
os.makedirs(path, exist_ok=True)

多亏了这个 exist_ok 标志,如果目录已经存在,它甚至不会报错(这要看你的需求……)。


从 Python 3.4 开始(这个版本包含了 pathlib 模块),你可以这样做:

from pathlib import Path
path = Path('/home/dail/first/second/third')
path.mkdir(parents=True)

从 Python 3.5 开始,mkdir 也有一个 exist_ok 标志 - 如果把它设置为 True,那么如果目录已经存在,就不会抛出异常:

path.mkdir(parents=True, exist_ok=True)

撰写回答