makedirs - 递归目录创建
给定具有以下内容的本地目录:
└── dir1
├── subdir1
└── subdir2
我们想在新目录 dir2 下创建相同的 subdir1,subdir2,它目前还不存在。
import os
os.makedirs("./dir2/subdir1")
os.makedirs("./dir2/subdir2")
运行此结果
├── dir1
│ ├── subdir1
│ └── subdir2
└── dir2
├── subdir1
└── subdir2
dir2 仅在第一次需要时创建,用于 subdir1 的创建。
如果我们使用了 os.mkdir ,我们就会遇到异常,因为 dir2 还不存在。
os.mkdir("./dir2/subdir1")
OSError: [Errno 2] No such file or directory: './dir2/subdir1'
如果目标目录已存在,os.makedirs 将不喜欢它。如果我们再次重新运行它:
OSError: [Errno 17] File exists: './dir2/subdir1'
但是,通过捕获异常并检查目录是否已创建,可以轻松解决此问题。
try:
os.makedirs("./dir2/subdir1")
except OSError:
if not os.path.isdir("./dir2/subdir1"):
raise
try:
os.makedirs("./dir2/subdir2")
except OSError:
if not os.path.isdir("./dir2/subdir2"):
raise