散らかったフォルダの中から、特定の拡張子のファイルだけを抽出して整理したい…そんなときに便利なのが、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, ...
まとめ
機能 | メリット |
---|---|
特定の拡張子だけを移動 | 整理が簡単に |
関数化+マッピング辞書 | 再利用・拡張性が高い |
自動実行に応用可能 | 業務の効率化に役立つ |