Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでディレクトリを再帰的に削除する方法|shutil.rmtreeの使い方を解説

Pythonでファイルやサブフォルダを含むフォルダ(ディレクトリツリー)を丸ごと削除したい場合、標準ライブラリの shutil モジュールを使うのが最も簡単な方法です。

shutil.rmtree() の基本的な使い方

指定したフォルダと、その中にあるすべてのファイル・サブフォルダを一括で削除するには、以下のように記述します。

>>> import shutil
>>> shutil.rmtree('my_folder')

注意点

shutil.rmtree() による削除は元に戻せません。ゴミ箱へ移動されるのではなく、完全に削除されるため、実行前に削除対象のパスが正しいかどうか必ず確認してください。

また、読み取り専用ファイルや使用中のファイルがあるとエラーが発生することがあります。そのような場合は、エラー発生時に呼び出されるコールバック関数を onerror 引数に渡すことで、柔軟に対応できます。

import os
import stat
import shutil

def remove_readonly(func, path, _):
    # 読み取り専用属性を解除してから再試行する
    os.chmod(path, stat.S_IWRITE)
    func(path)

shutil.rmtree('my_folder', onerror=remove_readonly)

まとめ

  • ディレクトリを中身ごと再帰的に削除するなら shutil.rmtree() を使う。
  • 削除は不可逆なので、パス指定のミスには十分注意する。
  • 権限エラーなどへの対処には onerror 引数を活用できる。
  1. Pythonで再帰的にディレクトリを作成するには?os.makedirsの使い方を解説

    再帰的にディレクトリを作成する方法 Pythonで、まだ存在しない親ディレクトリも含めてまとめてフォルダを作成したい場合は、標準ライブラリの os.makedirs() を使用します。作成したいパスを引数として渡すだけで、途中階層のディレクトリがすべて自動的に生成されます。 import os os.makedirs(my_folder/another/folder, exists_ok=True) このコードでは、「my_folder」→「another」→「folder」というように、必要なディレクトリが一括で作成されます。 exists_ok=True を指定する理由 引数 exists

  2. Pythonでディレクトリを作成する方法をわかりやすく解説

    Pythonでディレクトリを作成する基本方法 Pythonでディレクトリ(フォルダ)を作成するには、まず os.path.exists() を使って、そのディレクトリがすでに存在するかどうかを確認します。存在しない場合のみ作成することで、エラーの発生を防ぐことができます。 import os if not os.path.exists(my_folder): os.makedirs(my_folder) os.makedirs() は、指定したパスの中間ディレクトリも必要に応じて自動的に作成してくれる便利な関数です。 EAFPスタイルでの書き方 Pythonでは「EAFP(Easi