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