如何递归创建目录?
有没有一种Python的方法可以递归地创建目录?我有这个路径:
/home/dail/
我想要创建
/home/dail/first/second/third
我可以递归地创建吗,还是必须一个一个目录地创建?
同样的,关于:
chmod 和 chown,我可以递归地操作,而不用为每个文件或目录单独设置权限吗?
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
是你需要的工具。如果你想用 chmod
或 chown
,你就得用 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)