- 一時ファイル削除は「作業後に残る不要ファイルを自動で片付け、環境を常にクリーンに保つ」ための基本自動化
- 一時ファイルの種類と削除の考え方
- 拡張子で一時ファイルを削除する(最も基本的)
- 名前パターンで一時ファイルを削除する(Excel・Word など)
- 更新日時が古い一時ファイルだけ削除する(安全性が高い)
- 一時フォルダごと削除する(作業フォルダの完全リセット)
- 例題①:ZIP 解凍後に作られた一時展開フォルダを削除する
- 例題②:処理後に作業用 CSV を削除する
- 例題③:サブフォルダも含めて一時ファイルを削除する
- pathlib を使った読みやすい一時ファイル削除コード
- 一時ファイル削除を業務で設計するときの視点
一時ファイル削除は「作業後に残る不要ファイルを自動で片付け、環境を常にクリーンに保つ」ための基本自動化
業務で 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()で削除- パス操作が読みやすく、保守性が高い
一時ファイル削除を業務で設計するときの視点
- 拡張子・名前パターン・更新日時のどれで判定するか決める
- 誤削除を防ぐため「一時ファイル専用フォルダ」を作ると安全
- 大量ファイルがある場合はフォルダごと削除が最も効率的
- 自動処理の最後に「クリーンアップ処理」を入れると安定運用につながる
