【Python】特定フォルダ内のファイルを拡張子別に分類する方法

【Python】特定フォルダ内のファイルを拡張子別に分類する方法 Python

業務や日常のファイル整理で、同じフォルダにさまざまな拡張子のファイルが混在していることはありませんか?
Pythonを使えば、ファイルを拡張子ごとに自動で分類し、サブフォルダに振り分けることが可能です。この記事では、具体的なコードとともにその方法をご紹介します。

拡張子別に分類するPythonスクリプト

以下のコードは、指定したフォルダ内のファイルを拡張子別に分類して、それぞれの拡張子名のフォルダに移動する処理です。

import os
import shutil

# 対象のフォルダ(ここを書き換えてください)
target_dir = r'C:\Users\yourname\Desktop\分類対象'

# フォルダ内の全ファイルを取得
for filename in os.listdir(target_dir):
    file_path = os.path.join(target_dir, filename)

    # ファイルかどうかを確認
    if os.path.isfile(file_path):
        # 拡張子を取得
        _, ext = os.path.splitext(filename)
        ext = ext.lower().lstrip('.')  # 例: .jpg → jpg に変換

        if not ext:
            ext = 'no_extension'  # 拡張子がない場合のフォルダ名

        # 分類先のフォルダパス
        dest_folder = os.path.join(target_dir, ext)

        # フォルダが存在しない場合は作成
        os.makedirs(dest_folder, exist_ok=True)

        # ファイルを移動
        shutil.move(file_path, os.path.join(dest_folder, filename))

print("分類が完了しました。")

実行結果の例

例えば以下のようなファイル構成があった場合

分類対象/
├─ photo.jpg
├─ document.pdf
├─ music.mp3

実行後は次のように分類されます

分類対象/
├─ jpg/
│  └─ photo.jpg
├─ pdf/
│  └─ document.pdf
├─ mp3/
│  └─ music.mp3

応用ポイント

  • shutil.move() を shutil.copy2() に変更すれば、元ファイルを残したままコピーも可能です。
  • サブフォルダも対象にしたい場合は os.walk() を使って再帰的に処理できます。
  • ext をキーにしたログ出力やファイル数カウントも簡単に追加できます。

まとめ

Pythonを使えば、煩雑になりがちなファイル整理も簡単に自動化できます。日常の作業効率化やバックアップ前の準備にも有効です。ぜひ活用してみてください。