今回は、Pythonでディレクトリを削除する方法についてご紹介します。
ディレクトリを削除するための基本知識
Pythonには、標準ライブラリを使った複数のディレクトリ削除手段があります。
os.rmdir()は空のディレクトリだけ削除できる関数です。
shutil.rmtree()は中身のあるディレクトリも再帰的に削除できます。
pathlib.Path.rmdir()は空のディレクトリをオブジェクト指向的に操作できます。
さらに、サードパーティ製のsend2trashを利用すれば、ごみ箱へ移動する形で削除できます。
用途や状況に応じて最適な方法を選択すると、安全かつ効率的にディレクトリを扱うことができます。
ディレクトリを削除する方法と具体例
os.rmdir()を使う
os.rmdir()は空のディレクトリ専用の削除関数です。
対象ディレクトリが空でない場合はOSError(またはFileNotFoundError)などのエラーを出します。
以下の例では、指定したパスのディレクトリを削除し、結果を出力します。
1 2 3 4 5 6 7 8 9 10 |
import os dir_path = 'path/to/empty_directory' try: os.rmdir(dir_path) print(f"{dir_path} を削除しました。") except FileNotFoundError: print("指定されたディレクトリが存在しません。") except OSError as e: print(f"削除できませんでした: {e}") |
path/to/empty_directory を削除しました。
shutil.rmtree()を使う
shutil.rmtree()を利用すると、空のディレクトリだけでなく、中身のあるディレクトリも再帰的にまとめて削除できます。
一度に大量のファイルやサブディレクトリを消去するため、指定パスを誤ると取り返しのつかない被害を受ける可能性があります。
安全に利用するために、あらかじめ削除対象のパスが正しいか確認しておくとよいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
import shutil dir_path = 'path/to/non_empty_directory' try: shutil.rmtree(dir_path) print(f"{dir_path} とその中身をすべて削除しました。") except FileNotFoundError: print("指定されたディレクトリが存在しません。") except PermissionError: print("アクセス権限が不足しています。") except Exception as e: print(f"削除中にエラーが発生しました: {e}") |
path/to/non_empty_directory とその中身をすべて削除しました。
pathlib.Path.rmdir()を使う
pathlib.Pathを使うと、Pythonのオブジェクト指向的な書き方でディレクトリ操作が可能です。
rmdir()メソッドは空のディレクトリ専用なので、空ではない場合はエラーになります。
1 2 3 4 5 6 7 8 9 10 |
from pathlib import Path dir_path = Path('path/to/empty_directory') try: dir_path.rmdir() print(f"{dir_path} を削除しました。") except FileNotFoundError: print("指定されたディレクトリが存在しません。") except OSError as e: print(f"削除できませんでした: {e}") |
path/to/empty_directory を削除しました。
send2trashを使ってごみ箱に移動する
誤って削除してしまうリスクを減らすには、サードパーティ製ライブラリsend2trashが便利です。
こちらは完全に消去するのではなく、一度ごみ箱へ移動してから必要に応じて復元できます。
まずはコマンドラインで pip install send2trash を実行してインストールしてください。
1 2 3 4 5 6 7 8 |
from send2trash import send2trash dir_path = 'path/to/directory' try: send2trash(dir_path) print(f"{dir_path} をごみ箱に移動しました。") except Exception as e: print(f"ごみ箱への移動中にエラーが発生しました: {e}") |
path/to/directory をごみ箱に移動しました。
よくあるエラーと対処法
ディレクトリ削除時には、さまざまなエラーが発生することがあります。
以下に代表的なエラーと対処法をまとめました。
- FileNotFoundError:指定パスが存在しない場合に発生。パス指定が正しいか確認する。
- OSError:ディレクトリが空ではない、またはシステムの都合で削除できない場合に発生。空でないディレクトリはshutil.rmtree()などを使用する。
- PermissionError:アクセス権限がないときに発生。管理者権限での実行や、権限設定を見直す。
- Exception:その他の予期せぬエラー。エラーメッセージを確認して原因を特定する。
まとめ
Pythonでディレクトリを削除する方法には複数の手段があります。
状況に合った関数やライブラリを選ぶことで、安全かつ効率よく削除を実現できます。
削除前に対象パスを十分に確認し、必要に応じてバックアップやごみ箱の活用を検討するとより安心です。