Pythonで空でないディレクトリ(フォルダ)ツリーを丸ごと削除する方法
Pythonでは、標準ライブラリを使うだけで、ファイルが入った空でないフォルダや、その中のサブフォルダ・ファイルまで含めたディレクトリツリー全体を簡単に削除できます。ここでは、代表的な2つの方法を紹介します。
shutil.rmtree():空でないフォルダをまとめて削除する
削除したいファイルやサブフォルダが入っているフォルダを丸ごと消したい場合は、shutilモジュールのrmtree()関数を使います。この関数は、指定したディレクトリと、その中身すべて(ファイル・サブディレクトリ)を再帰的に削除してくれます。
>>> import shutil
>>> shutil.rmtree('my_folder')
このコードを実行すると、my_folderの中にあるすべてのファイルとサブフォルダも含めて、フォルダ自体が完全に削除されます。
エラーへの対処
削除対象のフォルダが存在しない場合や、アクセス権限がない場合は例外が発生します。安全に実行したいときは、次のようにtry-exceptで囲むのがおすすめです。
import shutil, os
path = 'my_folder'
if os.path.exists(path):
shutil.rmtree(path)
else:
print('フォルダが存在しません')
os.rmdir():空のフォルダだけを削除する
逆に、中身が空のフォルダだけを削除したい場合は、osモジュールのrmdir()関数を使用します。
>>> import os
>>> os.rmdir('my_folder')
なお、os.rmdir()は対象フォルダ内にファイルやサブフォルダが1つでも残っているとOSErrorを発生させて削除できません。空でないフォルダを誤って削除しないための安全機構です。
使い分けのポイント
- 中身ごと全部消したい →
shutil.rmtree() - 空のフォルダだけ消したい →
os.rmdir()
どちらの関数も削除したデータはゴミ箱に入らず完全に失われるため、実行前には対象パスをよく確認してください。特に本番環境での利用時は、パスの指定ミスによる意図しない削除に十分注意しましょう。
-
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
-
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