作業フォルダ初期化は「毎回の処理をクリーンな状態から始める」ための重要な自動化
業務自動化では、処理の途中で生成される中間ファイル・ログ・一時ファイルがフォルダに残り続けると、次のような問題が起きます。
- 前回の残骸が原因で処理が失敗する
- 古いファイルを誤って読み込んでしまう
- フォルダが散らかって管理しづらくなる
- セキュリティ上、残してはいけないファイルが残る
そこで必要なのが 作業フォルダ初期化(クリーンアップ) です。
Python を使うと、作業フォルダを安全にリセットし、毎回の処理を安定させることができます。
作業フォルダ初期化の基本方針
作業フォルダ初期化にはいくつかのアプローチがあります。
- フォルダ内のファイルだけ削除する
- サブフォルダも含めて全削除する
- フォルダごと削除して再作成する
- 特定の拡張子だけ削除する
- 古いファイルだけ削除する
どれを選ぶかは業務の性質によって変わります。
フォルダ内のファイルだけ削除する(最も基本的)
作業フォルダの中身を空にするテンプレート
import os
def clear_folder(folder):
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
os.remove(path)
print("削除:", path)
clear_folder("work")
Python深掘りポイント
- フォルダ自体は残すため、権限や設定が維持される
- 中身だけ消すので安全性が高い
- ログフォルダや作業フォルダでよく使う
サブフォルダも含めて完全初期化する(階層構造対応)
os.walk を使って階層全体を削除
import os
import shutil
def clear_folder_recursive(folder):
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
os.remove(path)
else:
shutil.rmtree(path)
print("削除:", path)
clear_folder_recursive("work")
Python深掘りポイント
- サブフォルダも含めて完全に空にできる
- 大規模プロジェクトの作業フォルダで役立つ
- 誤削除を防ぐため「作業専用フォルダ」に限定するのが安全
フォルダごと削除して再作成する(最も確実)
作業フォルダを丸ごとリセットする
import shutil
import os
def reset_work_folder(folder):
if os.path.exists(folder):
shutil.rmtree(folder)
os.makedirs(folder)
print("作業フォルダを初期化しました:", folder)
reset_work_folder("work")
Python深掘りポイント
- 最も確実で、残骸が一切残らない
- 一時ファイルが大量にある場合に最適
- 誤削除を防ぐため、フォルダ名を固定しておくと安全
特定の拡張子だけ削除する(中間ファイルだけ消したい場合)
例:.tmp と _work.csv だけ削除
import os
def clear_temp_files(folder):
for name in os.listdir(folder):
if name.endswith(".tmp") or name.endswith("_work.csv"):
path = os.path.join(folder, name)
os.remove(path)
print("削除:", path)
clear_temp_files("work")
Python深掘りポイント
- 中間ファイルだけ削除したい場合に便利
- 拡張子や名前パターンを業務ルールに合わせて調整できる
古いファイルだけ削除して初期化する(安全性重視)
例:7日以上前のファイルだけ削除
import os
import time
def clear_old_files(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 os.path.getmtime(path) < limit:
os.remove(path)
print("削除:", path)
clear_old_files("work", 7)
Python深掘りポイント
- 更新日時で判定するため誤削除しにくい
- 長期運用の自動処理で特に有効
例題①:毎朝のバッチ処理前に作業フォルダを初期化する
シナリオ
毎朝 9 時にバッチ処理を実行する前に、作業フォルダを空にしたい。
reset_work_folder("daily_work")
Python深掘りポイント
- バッチ処理の安定性が大幅に向上
- 前日の残骸によるエラーを防げる
例題②:ETL 処理の中間ファイルだけ削除する
シナリオ
ETL の途中で生成される _tmp.csv を削除したい。
clear_temp_files("etl_work")
Python深掘りポイント
- 中間ファイルは名前パターンで判定できることが多い
- 必要なファイルを残しつつクリーンアップできる
例題③:ZIP 解凍後の一時展開フォルダを初期化する
シナリオ
ZIP を解凍 → 中身を処理 → 展開フォルダを初期化したい。
reset_work_folder("unzipped_temp")
Python深掘りポイント
- 解凍後の一時フォルダは残す必要がない
- 大量ファイルでも一括削除できる
pathlib を使った読みやすい作業フォルダ初期化
Path オブジェクトで直感的に書ける
from pathlib import Path
import shutil
def reset_path_folder(folder: Path):
if folder.exists():
shutil.rmtree(folder)
folder.mkdir()
print("初期化:", folder)
reset_path_folder(Path("work"))
Pythonメリット
- パス結合が
/で直感的 exists()やmkdir()が読みやすい- 保守性が高く、業務コードに向いている
作業フォルダ初期化を業務で設計するときの視点
- フォルダごと削除するか、中身だけ削除するかを明確にする
- 誤削除を防ぐため「作業専用フォルダ」を用意する
- 中間ファイルの命名ルールを決めると自動化しやすい
- バッチ処理の前後に初期化を入れると安定性が向上する
- 大量ファイルがある場合はフォルダごと削除が最も効率的
