Python 業務自動化 | ファイル・フォルダ自動化:基本操作 - フォルダ削除

Python Python
スポンサーリンク

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("削除対象のフォルダがありません")
Python

shutil.copytree() を使うことで、フォルダごとバックアップできます。


フォルダ削除を安全にするための考え方を深掘りする

削除対象を“明確に”する

削除は取り返しがつかないため、次のような工夫が重要です。

削除対象のパスを変数で明示する
曖昧なパス(例:"backup/*")は誤削除の原因になります。

削除前にログを出す
「何を削除したか」が後で追えるようにする。

削除前にバックアップを取る
重要フォルダなら必須。

最初は「削除せずに一覧表示だけ」する
誤削除を防ぐための練習として非常に有効です。


まとめ:フォルダ削除は“慎重さ”が最大の武器

フォルダ削除は業務自動化の中で最も慎重に扱うべき操作です。
しかし、正しい手順と安全設計を身につければ、強力な自動化ツールになります。

削除前の存在確認
削除前のバックアップ
削除対象の明確化
ログ出力による追跡性

これらを意識するだけで、あなたのスクリプトは一気に“実務レベル”になります。

もしよければ、あなたのPCの中で「毎回手で削除しているフォルダ」を一つ思い浮かべてみてください。
その作業は、今日紹介したテンプレートで確実に自動化できます。

タイトルとURLをコピーしました