【Python応用】ファイル整理を自動化!拡張子ごとにフォルダへ仕分けるプログラム

Python

散らかったフォルダの中から、特定の拡張子のファイルだけを抽出して整理したい…そんなときに便利なのが、Pythonを使った自動整理プログラムです。

この記事では、以下のような悩みを解決するコードをご紹介します。

この記事の対象

  • フォルダ内の .xlsx.py など特定のファイルを自動で分類したい方
  • Pythonでファイル操作を学びたい方
  • 定期的なファイル整理を効率化したい方
スポンサーリンク
スポンサーリンク

行ったこと

個人のローカルでとあるフォルダ内に何でもかんでもデータを放り込んでおり、どえらい数になっていたので、「.xlsx」ファイルだけを任意のフォルダに移動させるという整理をPythonで行いました。

ステップ①:「.xlsx」ファイルだけを移動する基本コード

import os
import shutil
import glob

# フォルダ作成
new_folder = '00-Excel'
if not os.path.exists(new_folder):
    os.mkdir(new_folder)

# .xlsxファイルを一覧取得して移動
files = glob.glob('*.xlsx')
for file in files:
    shutil.move(file, new_folder)

上記がプログラムになります。

解説

処理内容
glob.glob('*.xlsx')カレントディレクトリ内の.xlsxファイルをすべて取得
os.mkdir()フォルダがなければ作成
shutil.move()ファイルを移動

結果

仕分け後

結果です。

「.xlsx」ファイルが全くありませんでした。

整理しなければならなかったのは、「.png」や「.py」というオチでした。そうは言っても整理できたので良かったと思いたいです。

Cronなどで自動化することで定期的に整理できそうなので、皆さんも是非使用してみて下さい。

ステップ②:関数化して複数の拡張子に対応

import os
import shutil
import glob

def huriwake(folder_name):
    if not os.path.exists(folder_name):
        os.mkdir(folder_name)

    # 拡張子のマッピング
    ext_map = {
        '00-Python': '*.py',
        '01-Batch': '*.bat',
        '02-CSV': '*.csv',
        '03-Excel': '*.xlsx',
    }

    pattern = ext_map.get(folder_name)
    if pattern:
        files = glob.glob(pattern)
        for file in files:
            shutil.move(file, folder_name)

# 呼び出し
huriwake('00-Python')
huriwake('01-Batch')
huriwake('02-CSV')
huriwake('03-Excel')

上記は関数化して拡張子ごとに振り分けするプログラムです。

メリット

  • 関数化により、フォルダ・拡張子の追加や変更が簡単
  • 複数形式のファイルを一括整理できる
  • dict で拡張性のある設計に

実行前後のイメージ

  • 整理前:1つのフォルダにすべてのファイルが混在
  • 整理後:各拡張子ごとに対応するフォルダへ自動移動
📁 00-Python ─ file1.py, ...
📁 01-Batch  ─ script.bat, ...
📁 02-CSV    ─ data.csv, ...
📁 03-Excel  ─ report.xlsx, ...

まとめ

機能メリット
特定の拡張子だけを移動整理が簡単に
関数化+マッピング辞書再利用・拡張性が高い
自動実行に応用可能業務の効率化に役立つ

関連記事

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