全般

[Python] ディレクトリ(フォルダ)を削除する方法

今回は、Pythonでディレクトリを削除する方法についてご紹介します。

ディレクトリを削除するための基本知識

Pythonには、標準ライブラリを使った複数のディレクトリ削除手段があります。

os.rmdir()は空のディレクトリだけ削除できる関数です。

shutil.rmtree()は中身のあるディレクトリも再帰的に削除できます。

pathlib.Path.rmdir()は空のディレクトリをオブジェクト指向的に操作できます。

さらに、サードパーティ製のsend2trashを利用すれば、ごみ箱へ移動する形で削除できます。

用途や状況に応じて最適な方法を選択すると、安全かつ効率的にディレクトリを扱うことができます。

ディレクトリを削除する方法と具体例

os.rmdir()を使う

os.rmdir()は空のディレクトリ専用の削除関数です。

対象ディレクトリが空でない場合はOSError(またはFileNotFoundError)などのエラーを出します。

以下の例では、指定したパスのディレクトリを削除し、結果を出力します。

実行結果

path/to/empty_directory を削除しました。

shutil.rmtree()を使う

shutil.rmtree()を利用すると、空のディレクトリだけでなく、中身のあるディレクトリも再帰的にまとめて削除できます。

一度に大量のファイルやサブディレクトリを消去するため、指定パスを誤ると取り返しのつかない被害を受ける可能性があります。

安全に利用するために、あらかじめ削除対象のパスが正しいか確認しておくとよいでしょう。

実行結果

path/to/non_empty_directory とその中身をすべて削除しました。

pathlib.Path.rmdir()を使う

pathlib.Pathを使うと、Pythonのオブジェクト指向的な書き方でディレクトリ操作が可能です。

rmdir()メソッドは空のディレクトリ専用なので、空ではない場合はエラーになります。

実行結果

path/to/empty_directory を削除しました。

send2trashを使ってごみ箱に移動する

誤って削除してしまうリスクを減らすには、サードパーティ製ライブラリsend2trashが便利です。

こちらは完全に消去するのではなく、一度ごみ箱へ移動してから必要に応じて復元できます。

まずはコマンドラインで pip install send2trash を実行してインストールしてください。

実行結果

path/to/directory をごみ箱に移動しました。

よくあるエラーと対処法

ディレクトリ削除時には、さまざまなエラーが発生することがあります。

以下に代表的なエラーと対処法をまとめました。

  • FileNotFoundError:指定パスが存在しない場合に発生。パス指定が正しいか確認する。
  • OSError:ディレクトリが空ではない、またはシステムの都合で削除できない場合に発生。空でないディレクトリはshutil.rmtree()などを使用する。
  • PermissionError:アクセス権限がないときに発生。管理者権限での実行や、権限設定を見直す。
  • Exception:その他の予期せぬエラー。エラーメッセージを確認して原因を特定する。

まとめ

Pythonでディレクトリを削除する方法には複数の手段があります。

状況に合った関数やライブラリを選ぶことで、安全かつ効率よく削除を実現できます。

削除前に対象パスを十分に確認し、必要に応じてバックアップやごみ箱の活用を検討するとより安心です。