日々増えていくファイルを手動で整理するのは、正直かなりの手間ですよね。
特にデスクトップやダウンロードフォルダがすぐに散らかってしまう…という方は多いはずです。
この記事では、PythonとTkinterを使って作る、「指定フォルダ内のファイルを拡張子や日付で自動分類するアプリ」を紹介します。
さらに、分類対象の拡張子を選べる機能や、ログで処理結果を確認できる仕組みも追加しています。
筆者自身、業務で大量の画像・PDF・スプレッドシート(Excelファイル)を扱うことが多く、このアプリを導入したことで、ファイル整理の時間を毎日15分以上削減できました。
アプリの特徴
- GUIで操作できる(Tkinter使用)
- 拡張子ごとに自動分類
- 作成日または更新日で分類
- 分類対象の拡張子をGUI上で選択可能
- 処理ログをリアルタイム表示して進捗確認
Python初心者でもGUIで操作できるため、プログラム知識がなくても安心して使えます。
UIイメージ(レイアウト)
以下のような直感的UIで、クリック操作だけで分類処理を実行できます。
Pythonサンプルコード(GUI付き)
このコードを file_sorter.py として保存し、Pythonで実行すればすぐに使えます。
(Python 3.8以上 + Tkinter 標準搭載環境を推奨)
import os
import shutil
from pathlib import Path
from datetime import datetime
import tkinter as tk
from tkinter import filedialog, messagebox, scrolledtext
# 対象とする拡張子の候補
EXT_OPTIONS = ['jpg', 'png', 'pdf', 'docx', 'xls', 'xlsx', 'txt', 'csv']
# ファイル分類関数
def classify_files():
folder = folder_path.get()
output = output_path.get()
use_ext = ext_var.get()
use_date = date_var.get()
date_type = date_type_var.get()
selected_exts = [ext for ext, var in ext_vars.items() if var.get()]
if not folder or not output:
messagebox.showwarning("警告", "対象フォルダと出力先フォルダを指定してください。")
return
log_area.delete(1.0, tk.END)
files = list(Path(folder).glob("*.*"))
for file in files:
try:
ext = file.suffix[1:].lower()
if use_ext and ext not in selected_exts:
continue
# 分類先フォルダ構築
dest_folder = Path(output)
if use_ext:
dest_folder = dest_folder / ext
if use_date:
timestamp = file.stat().st_ctime if date_type == "created" else file.stat().st_mtime
date_str = datetime.fromtimestamp(timestamp).strftime("%Y-%m")
dest_folder = dest_folder / date_str
dest_folder.mkdir(parents=True, exist_ok=True)
shutil.move(str(file), str(dest_folder / file.name))
log_area.insert(tk.END, f"✔ {file.name} → {dest_folder}\n")
except Exception as e:
log_area.insert(tk.END, f"⚠ {file.name} → エラー: {e}\n")
# フォルダ選択
def select_folder(entry):
path = filedialog.askdirectory()
if path:
entry.set(path)
# GUI構築
root = tk.Tk()
root.title("ファイル自動分類アプリ")
root.geometry("650x600")
folder_path = tk.StringVar()
output_path = tk.StringVar()
ext_var = tk.BooleanVar(value=True)
date_var = tk.BooleanVar(value=True)
date_type_var = tk.StringVar(value="created")
ext_vars = {ext: tk.BooleanVar(value=True) for ext in EXT_OPTIONS}
# UIレイアウト
tk.Label(root, text=" 対象フォルダ").pack()
tk.Entry(root, textvariable=folder_path, width=60).pack()
tk.Button(root, text="参照", command=lambda: select_folder(folder_path)).pack()
tk.Label(root, text=" 出力先フォルダ").pack()
tk.Entry(root, textvariable=output_path, width=60).pack()
tk.Button(root, text="参照", command=lambda: select_folder(output_path)).pack()
tk.Label(root, text=" 分類方法").pack()
tk.Checkbutton(root, text="拡張子で分類", variable=ext_var).pack()
tk.Checkbutton(root, text="日付で分類", variable=date_var).pack()
tk.Label(root, text=" 日付形式").pack()
tk.Radiobutton(root, text="作成日", variable=date_type_var, value="created").pack()
tk.Radiobutton(root, text="更新日", variable=date_type_var, value="modified").pack()
tk.Label(root, text=" 対象拡張子を選択").pack()
ext_frame = tk.Frame(root)
ext_frame.pack()
for i, ext in enumerate(EXT_OPTIONS):
tk.Checkbutton(ext_frame, text=ext, variable=ext_vars[ext]).grid(row=i//4, column=i%4, sticky="w")
tk.Button(root, text=" 実行", command=classify_files, bg="lightgreen").pack(pady=10)
tk.Label(root, text=" ログ").pack()
log_area = scrolledtext.ScrolledText(root, width=80, height=15)
log_area.pack()
root.mainloop()
実行方法
- Python(公式サイト)をインストール
- 上記コードを
file_sorter.pyとして保存 - ターミナルまたはコマンドプロンプトで
python file_sorter.pyを実行
実行するとGUIが表示され、対象フォルダ・出力先を指定して「実行」をクリックするだけでOKです。
動作イメージ
初期状態
実行後のGUI動作確認
仕分け前のフォルダ
仕分け後の結果
ファイルは自動的に拡張子ごと・日付ごとに分類され、下記のように整理されます。
痒いところに手が届く!カスタマイズ例
このアプリはシンプルな設計なので、以下のような機能も簡単に追加できます👇
- 重複ファイルチェック:同名ファイルがある場合に自動リネーム
- 除外条件の設定:特定フォルダや一部拡張子をスキップ
- ファイル容量で分類:大容量ファイルだけ別フォルダへ
- EXE化して配布:PyInstallerで実行ファイル化
特に、”重複ファイル処理”や”容量別整理”は、実務でのニーズが高い機能です。
コードを数行追加するだけで、より実用的なツールに進化させられます。
拡張子分類を増やして専門ファイルにも対応
EXT_OPTIONS = ['jpg', 'png', 'pdf', 'docx', 'xls', 'xlsx', 'txt', 'csv']
ここに dwg や STEP、psd などを追加すれば、CADデータやデザインファイルなどの専門フォーマットにも対応可能です。
業務用途にも十分応用できます。
今後追加したい機能
- 分類前のプレビュー表示
- 重複ファイルの検出とスキップ
- 分類後の統計表示(ファイル数・容量)
- EXE化して配布可能に(PyInstaller対応)
まとめ
この「ファイル自動分類アプリ」は、日々のファイル整理をワンクリックで自動化できる便利ツールです。
Python初心者でも扱いやすく、実務・副業・学習すべてに応用可能。
自分の作業スタイルに合わせて機能を追加していけば、
「自分専用の整理アシスタント」を作ることもできます。
もし「自分の業務に合わせてカスタマイズしたい!」という方は、コメントやSNSで気軽にご相談ください。

