Python: ディレクトリを削除 rmdir(), 再帰的 removedirs()

Pythonでディレクトリを削除する場合は osモジュールの rmdir()関数、 再帰的に(複数階層の)ディレクトリを削除する場合は removedirs()関数を使います。

書式

書式
os.rmdir(パス)

os.removedirs(パス)

どちらの関数も戻り値はありません。
指定したディレクトリが空でない場合は 「OSError」が発生します。 指定したディレクトリが存在しない場合は「FileNotFoundError」が発生します。

rmdir()でディレクトリを削除

まずは rmdir()でディレクトリを削除します。

import os

os.rmdir("sample")

もし指定したディレクトリに何らかのファイルやディレクトリが存在して、 空でない場合は次のようにエラー「OSError」が発生します。

実行結果
  File "test.py", line 3, in 
    os.rmdir("sample")
OSError: [WinError 145] ディレクトリが空ではありません。: 'sample'

removedirs()でディレクトリを再帰的に削除

removedirs()を使うと再帰的に(複数階層の)ディレクトリを削除できます。 まとめて削除したい場合はremovedirs()の方が便利です。

現在ディレクトリに次のような構成のディレクトリがあるとします。 (sample2の下にsample3とsample4)

sample2
  ├ sample3
  └ sample4
import os

os.removedirs("sample2/sample3")

os.removedirs("sample2/sample4")

最初の「os.removedirs("sample2/sample3")」でディレクトリ「sample3」のみが削除されます。 この時点では「sample2」は残っています。
次の「os.removedirs("sample2/sample4")」でディレクトリ 「sample4」と「sample2」が削除されます。

os.removedirs()もos.remove()と同じように、 指定したディレクトリが空でない場合は「OSError」が発生し、 指定したディレクトリが存在しにあ場合は「FileNotFoundError」が発生します。

Python