makedirs 在 Python 中遞歸創建深層層次目錄

商業

在不存在的目錄中使用 os.mkdir() 創建新目錄時出錯

os.mkdir()這是用於在 Python 中創建目錄(文件夾)的方法。如果嘗試在不存在的目錄中創建新目錄,則會發生錯誤。(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

使用 os.madeirs() 遞歸創建目錄

如果使用 os.makedirs() 而不是 os.mkdir() ,它會創建一個中間目錄,因此您可以遞歸地創建一個深層次的目錄。

os.makedirs('not_exist_dir/new_dir')

在本例中,它將一次創建所有這些。如果有多個新的中間目錄也可以。

  • 中間目錄:not_exist_dir
  • 最終目錄:new_dir

但是,如果結束目錄已經存在,則會發生錯誤。(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

如果有參數exist_ok

從Python 3.2開始,增加了參數exist_ok,如果exist_ok=True,即使結束目錄已經存在也不會出錯。如果結束目錄不存在,將創建一個新目錄,如果存在,則什麼也不做。這很方便,因為您不需要提前檢查終端目錄是否存在。

os.makedirs('exist_dir/exist_dir', exist_ok=True)

如果缺少參數exist_ok

如果你有一個舊版本的Python,並且在os.madeirs中沒有參數exist_ok,你可以使用os.path.exists來判斷是否有結束目錄,如果沒有,再新建一個結束目錄。

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')