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

Python Python
スポンサーリンク

空フォルダ削除は「不要な作業ディレクトリを自動で掃除する」ための基本操作

業務自動化では、処理の途中で一時フォルダを作ったり、日付ごとにフォルダを生成したりすることがよくあります。
しかし、処理が終わった後に 中身が空のフォルダが大量に残ると、管理が煩雑になり、誤操作の原因にもなります。

Pythonでは、os.rmdir()os.listdir() を組み合わせることで、安全に空フォルダだけを削除できます。
ここでは、初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。


空フォルダ削除の基本:os.rmdir と listdir の組み合わせ

os.rmdir は「空フォルダ専用」であることを理解する

import os

os.rmdir("empty_folder")
Python

os.rmdir()空フォルダしか削除できません
中にファイルが1つでもあると OSError が発生します。

この性質を逆に利用して、
「フォルダが空かどうかを確認 → 空なら削除」
という安全な処理ができます。


空フォルダかどうかを判定する方法

listdir を使って中身が空か確認する

import os

folder = "work/temp"

if os.path.isdir(folder) and len(os.listdir(folder)) == 0:
    os.rmdir(folder)
    print("空フォルダを削除しました:", folder)
else:
    print("空ではありません:", folder)
Python

深掘りポイント

  • os.path.isdir() でフォルダであることを確認
  • os.listdir() が空リストなら中身がない
  • 削除前に必ず「空かどうか」を確認するのが安全設計

例題①:処理後の一時フォルダを自動削除する

シナリオ

処理の途中で work/temp を使い、処理終了後に空なら削除したい。

import os

temp_dir = "work/temp"

if os.path.isdir(temp_dir) and len(os.listdir(temp_dir)) == 0:
    os.rmdir(temp_dir)
    print("一時フォルダを削除しました:", temp_dir)
else:
    print("フォルダが空ではないため削除しません:", temp_dir)
Python

深掘りポイント

  • 一時フォルダは「空なら削除」「中身があるなら残す」が基本
  • 誤削除を防ぐために必ず中身チェックを入れる

例題②:フォルダ一覧から「空フォルダだけ」削除する

シナリオ

logs フォルダの中に日付フォルダが大量にあり、空のものだけ削除したい。

import os

root = "logs"

for name in os.listdir(root):
    path = os.path.join(root, name)

    if os.path.isdir(path) and len(os.listdir(path)) == 0:
        os.rmdir(path)
        print("削除:", path)
Python

深掘りポイント

  • 「フォルダであること」と「中身が空であること」の2条件が重要
  • 日付フォルダやバックアップフォルダの整理に非常に役立つ

例題③:サブフォルダも含めて空フォルダを再帰的に削除する

シナリオ

階層が深いフォルダ構造の中から、空フォルダだけをすべて削除したい。

import os

root = "project"

for current, dirs, files in os.walk(root, topdown=False):
    if len(dirs) == 0 and len(files) == 0:
        os.rmdir(current)
        print("削除:", current)
Python

深掘りポイント

  • os.walk(..., topdown=False) を使うことで「下から順に」探索できる
  • 下層の空フォルダを削除 → 上層も空になる → さらに削除できる
  • 再帰的な空フォルダ削除が安全に実現できる

pathlib を使った読みやすい書き方

Path.iterdir() と rmdir() を使う

from pathlib import Path

folder = Path("work/temp")

if folder.is_dir() and not any(folder.iterdir()):
    folder.rmdir()
    print("削除:", folder)
Python

メリット

  • any(folder.iterdir()) が「中身があるかどうか」を直感的に表現
  • pathlib はパス操作が読みやすく、初心者にも扱いやすい

空フォルダ削除を安全に行うための考え方

  • 削除前に必ず「空かどうか」を確認する
  • 誤削除を防ぐために os.rmdir() を使う(空以外は削除されない)
  • 再帰削除は topdown=False を使うと安全
  • 大量のフォルダを扱う場合はログを残すとトラブルが減る

空フォルダ削除は、業務自動化の「後片付け」を自動化するための重要な操作です。

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