Pythonで「フォルダ削除」を安全に扱うための完全ガイド
フォルダ削除は、業務自動化の中でも特に慎重さが求められる操作です。
「古いバックアップフォルダを定期的に削除する」「処理後の一時フォルダを掃除する」「エラー時に作られた作業フォルダを片付ける」──こうした作業はすべてフォルダ削除の応用です。
ただし、フォルダ削除は“元に戻せない”操作です。
だからこそ、初心者のうちから「安全に削除するための考え方」を身につけることが非常に重要です。
ここでは、Pythonでフォルダ削除を行うための基本から、実務でそのまま使えるテンプレートまで、丁寧に解説します。
フォルダ削除の基本:os.rmdir と shutil.rmtree
os.rmdir は「空フォルダ専用」である
Pythonには os.rmdir() というフォルダ削除用の関数がありますが、これは「空のフォルダ」しか削除できません。
import os
os.rmdir("empty_folder")
Pythonフォルダの中にファイルが1つでも入っているとエラーになります。
そのため、実務ではほとんど使われません。
shutil.rmtree は「中身ごと削除」できる
実務で使うべきは shutil.rmtree() です。
フォルダの中にファイルやサブフォルダがあっても、すべてまとめて削除できます。
import shutil
shutil.rmtree("old_backup")
Pythonこの一行でフォルダごと完全に削除されます。
ただし、強力すぎるため「誤削除」が起きると復元は困難です。
削除前に「存在確認」をする理由を深掘りする
存在しないフォルダを削除しようとするとエラーになる
次のように、存在しないフォルダを削除しようとすると FileNotFoundError が発生します。
shutil.rmtree("not_exist_folder")
Python業務自動化では、フォルダが存在する日と存在しない日があるのは普通です。
そのため、削除前に存在確認をするのが安全です。
import os
import shutil
path = "old_backup"
if os.path.exists(path):
shutil.rmtree(path)
print("削除しました:", path)
else:
print("フォルダが存在しません:", path)
Pythonこの「存在確認 → 削除」の流れは、実務で必須のパターンです。
例題①:処理後の一時フォルダを削除する
シナリオ
データ処理の途中で一時フォルダを作ることがあります。
処理が終わったら削除してクリーンな状態にしたい、というケースです。
コード例
import os
import shutil
temp_dir = "work/temp"
# 処理が終わったと仮定
print("処理完了")
if os.path.exists(temp_dir):
shutil.rmtree(temp_dir)
print("一時フォルダを削除しました:", temp_dir)
else:
print("一時フォルダは存在しませんでした")
Pythonこのテンプレートは、どんな業務スクリプトにも組み込みやすい構造です。
例題②:古いバックアップフォルダを日付で削除する
シナリオ
バックアップフォルダが日付ごとに作られているとします。
backup/
├── 2024-01-01/
├── 2024-01-02/
├── 2024-01-03/
この中から「7日以上前のフォルダだけ削除したい」というケースです。
コード例
import os
import shutil
from datetime import datetime, timedelta
backup_root = "backup"
limit = datetime.today() - timedelta(days=7)
for name in os.listdir(backup_root):
folder_path = os.path.join(backup_root, name)
if not os.path.isdir(folder_path):
continue
try:
folder_date = datetime.strptime(name, "%Y-%m-%d")
except ValueError:
continue
if folder_date < limit:
shutil.rmtree(folder_path)
print("削除:", folder_path)
Pythonこのテンプレートは、バックアップ管理の自動化で非常に役立ちます。
例題③:削除前にバックアップを取る安全設計
シナリオ
フォルダを削除したいが、万が一のためにバックアップを残しておきたい。
これは実務で非常に多い要望です。
コード例
import os
import shutil
src = "project/temp_data"
backup = "backup_before_delete/temp_data"
if os.path.exists(src):
os.makedirs(os.path.dirname(backup), exist_ok=True)
shutil.copytree(src, backup)
shutil.rmtree(src)
print("バックアップ後に削除しました:", src)
else:
print("削除対象のフォルダがありません")
Pythonshutil.copytree() を使うことで、フォルダごとバックアップできます。
フォルダ削除を安全にするための考え方を深掘りする
削除対象を“明確に”する
削除は取り返しがつかないため、次のような工夫が重要です。
削除対象のパスを変数で明示する
曖昧なパス(例:"backup/*")は誤削除の原因になります。
削除前にログを出す
「何を削除したか」が後で追えるようにする。
削除前にバックアップを取る
重要フォルダなら必須。
最初は「削除せずに一覧表示だけ」する
誤削除を防ぐための練習として非常に有効です。
まとめ:フォルダ削除は“慎重さ”が最大の武器
フォルダ削除は業務自動化の中で最も慎重に扱うべき操作です。
しかし、正しい手順と安全設計を身につければ、強力な自動化ツールになります。
削除前の存在確認
削除前のバックアップ
削除対象の明確化
ログ出力による追跡性
これらを意識するだけで、あなたのスクリプトは一気に“実務レベル”になります。
もしよければ、あなたのPCの中で「毎回手で削除しているフォルダ」を一つ思い浮かべてみてください。
その作業は、今日紹介したテンプレートで確実に自動化できます。
