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

Python Python
スポンサーリンク

一時ファイル削除は「作業後に残る不要ファイルを自動で片付け、環境を常にクリーンに保つ」ための基本自動化

業務で Python を使うと、処理の途中で一時ファイル(temp ファイル)が大量に生成されることがあります。
これらを放置すると次のような問題が起きます。

  • ディスク容量を圧迫する
  • フォルダが散らかって管理しづらくなる
  • 古い一時ファイルが誤って処理対象になる
  • セキュリティ上、残してはいけないファイルが残る

Python では、一時ファイルを安全に削除するための仕組みを簡単に作れます。
ここでは、初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。


一時ファイルの種類と削除の考え方

一時ファイルにはいくつかのパターンがあります。

  • プログラムが自動生成する .tmp.temp
  • Excel や Word が生成する ~$xxx
  • 中間処理で作った CSV・ログ
  • ZIP 解凍時に作られる一時展開ファイル
  • 自動処理の途中で作った作業用ファイル

削除の基本方針は次の通りです。

  • 拡張子で判定する
  • ファイル名のパターンで判定する
  • 更新日時が古いものだけ削除する
  • 一時フォルダごと削除する

拡張子で一時ファイルを削除する(最も基本的)

.tmp や .temp を削除するテンプレート

import os

def delete_temp_files(folder):
    for name in os.listdir(folder):
        if name.lower().endswith((".tmp", ".temp")):
            path = os.path.join(folder, name)
            os.remove(path)
            print("削除:", path)

delete_temp_files("work")
Python

深掘りポイント

  • 一時ファイルは拡張子で判定できることが多い
  • .tmp は Windows 系でよく使われる
  • .temp はアプリケーションが独自に作ることが多い

名前パターンで一時ファイルを削除する(Excel・Word など)

~$ で始まるファイルを削除する

import os

def delete_office_temp(folder):
    for name in os.listdir(folder):
        if name.startswith("~$"):
            path = os.path.join(folder, name)
            os.remove(path)
            print("削除:", path)

delete_office_temp("documents")
Python

深掘りポイント

  • Excel や Word は編集中に ~$ファイル名 を作る
  • 正常終了すると自動で消えるが、異常終了時に残る
  • 残っていると「ファイルがロックされています」と表示される原因になる

更新日時が古い一時ファイルだけ削除する(安全性が高い)

例:7日以上前の一時ファイルを削除

import os
import time

def delete_old_temp(folder, days=7):
    limit = time.time() - days * 86400

    for name in os.listdir(folder):
        path = os.path.join(folder, name)
        if os.path.isfile(path) and path.endswith(".tmp"):
            if os.path.getmtime(path) < limit:
                os.remove(path)
                print("削除:", path)

delete_old_temp("work", 7)
Python

深掘りポイント

  • 更新日時で判定するため「まだ使っている一時ファイル」を誤削除しにくい
  • 長期運用の自動処理で特に有効
  • 7日・30日など業務ルールに合わせて調整できる

一時フォルダごと削除する(作業フォルダの完全リセット)

作業用フォルダを丸ごと削除して再作成する

import shutil
import os

def reset_temp_folder(folder):
    if os.path.exists(folder):
        shutil.rmtree(folder)
    os.makedirs(folder)
    print("一時フォルダをリセットしました:", folder)

reset_temp_folder("temp_work")
Python

深掘りポイント

  • 一時ファイルが大量にある場合はフォルダごと削除が最も確実
  • shutil.rmtree() はフォルダごと削除する強力な関数
  • 誤削除を防ぐため「一時フォルダ専用」にするのが安全

例題①:ZIP 解凍後に作られた一時展開フォルダを削除する

シナリオ

ZIP を解凍 → 中身を処理 → 一時展開フォルダを削除したい。

import shutil

def cleanup_unzip_temp(folder):
    if os.path.exists(folder):
        shutil.rmtree(folder)
        print("展開フォルダ削除:", folder)

cleanup_unzip_temp("unzipped_temp")
Python

深掘りポイント

  • 解凍後の一時フォルダは残す必要がない
  • 大量のファイルがある場合でも一括削除できる

例題②:処理後に作業用 CSV を削除する

シナリオ

中間処理で作った CSV を削除して環境をクリーンにしたい。

import os

def delete_work_csv(folder):
    for name in os.listdir(folder):
        if name.endswith("_work.csv"):
            path = os.path.join(folder, name)
            os.remove(path)
            print("削除:", path)

delete_work_csv("work")
Python

深掘りポイント

  • 中間ファイルは名前パターンで判定できることが多い
  • _work.csv_tmp.csv などルールを決めておくと自動化しやすい

例題③:サブフォルダも含めて一時ファイルを削除する

os.walk を使って階層全体を探索

import os

def delete_temp_recursive(root):
    for current, dirs, files in os.walk(root):
        for name in files:
            if name.endswith(".tmp"):
                path = os.path.join(current, name)
                os.remove(path)
                print("削除:", path)

delete_temp_recursive("project")
Python

深掘りポイント

  • 大規模プロジェクトではサブフォルダに一時ファイルが散らばる
  • os.walk で階層全体を探索できる
  • 一括削除で環境をクリーンに保てる

pathlib を使った読みやすい一時ファイル削除コード

Path オブジェクトで直感的に書ける

from pathlib import Path

def delete_temp_path(folder: Path):
    for p in folder.rglob("*.tmp"):
        p.unlink()
        print("削除:", p)

delete_temp_path(Path("work"))
Python

メリット

  • rglob("*.tmp") でサブフォルダも含めて検索
  • unlink() で削除
  • パス操作が読みやすく、保守性が高い

一時ファイル削除を業務で設計するときの視点

  • 拡張子・名前パターン・更新日時のどれで判定するか決める
  • 誤削除を防ぐため「一時ファイル専用フォルダ」を作ると安全
  • 大量ファイルがある場合はフォルダごと削除が最も効率的
  • 自動処理の最後に「クリーンアップ処理」を入れると安定運用につながる

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