特定拡張子検索は「必要なファイルだけを正確に抽出する」ための基本スキル
業務自動化では、フォルダの中から 特定の拡張子だけを探す処理が非常に多く登場します。
「CSV だけ処理したい」「画像ファイルだけ集めたい」「ログファイルだけ別フォルダに移動したい」など、日常業務の多くがこのパターンに当てはまります。
Pythonでは、os モジュールや pathlib を使うことで、初心者でも安全かつ確実に拡張子検索ができます。
ここでは、基本から実務テンプレートまで丁寧に解説します。
拡張子検索の基本:os.listdir と endswith の組み合わせ
フォルダ直下から特定拡張子だけを探す基本形
import os
folder = "data"
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path) and name.lower().endswith(".csv"):
print("CSV:", path)
Python重要ポイントを深掘り
os.listdir()はファイルとフォルダを両方返すため、os.path.isfile()でファイルだけに絞るendswith(".csv")で拡張子を判定lower()を使うことで.CSVのような大文字にも対応
この3つの組み合わせが、特定拡張子検索の基本パターンです。
複数拡張子をまとめて検索する
例:jpg と png を両方探したい
import os
folder = "images"
for name in os.listdir(folder):
path = os.path.join(folder, name)
if not os.path.isfile(path):
continue
if name.lower().endswith((".jpg", ".jpeg", ".png")):
print("画像ファイル:", path)
Python深掘りポイント
endswith()はタプルを渡すと「どれかに一致」で判定できる- 画像・文書・ログなど、複数拡張子を扱う業務で非常に便利
サブフォルダも含めて検索する:os.walk の活用
階層構造をすべて探索する
import os
root = "project"
for current, dirs, files in os.walk(root):
for name in files:
if name.lower().endswith(".xlsx"):
print("Excel:", os.path.join(current, name))
Python深掘りポイント
os.walk()は階層を自動で潜ってくれる- 大規模フォルダでも高速
- 「プロジェクト全体から特定拡張子を探す」業務で必須
例題①:CSV ファイルだけを一覧化してリストに保存する
シナリオ
data フォルダ内の CSV をすべて集めて後で処理したい。
import os
folder = "data"
csv_files = []
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path) and name.lower().endswith(".csv"):
csv_files.append(path)
for f in csv_files:
print(f)
Python深掘りポイント
- 検索結果をリストに保存して後でまとめて処理できる
- ETL処理やバッチ処理でよく使うパターン
例題②:特定拡張子のファイルだけ別フォルダへ移動する
シナリオ
.log ファイルだけを logs_archive に移動したい。
import os
import shutil
src = "logs"
dst = "logs_archive"
os.makedirs(dst, exist_ok=True)
for name in os.listdir(src):
path = os.path.join(src, name)
if os.path.isfile(path) and name.lower().endswith(".log"):
new_path = os.path.join(dst, name)
shutil.move(path, new_path)
print("移動:", path, "→", new_path)
Python深掘りポイント
- 拡張子検索とファイル移動を組み合わせると「自動仕分け」が実現できる
- ログ管理やバックアップ処理で非常に役立つ
例題③:サブフォルダを含めて画像ファイルだけを検索して一覧化
シナリオ
プロジェクト全体から画像ファイルだけを探したい。
import os
root = "project"
images = []
for current, dirs, files in os.walk(root):
for name in files:
if name.lower().endswith((".jpg", ".jpeg", ".png")):
images.append(os.path.join(current, name))
for img in images:
print(img)
Python深掘りポイント
- 階層構造を意識せずに検索できる
- 大規模プロジェクトのファイル管理に最適
pathlib を使ったモダンで読みやすい検索
rglob を使うと直感的に書ける
from pathlib import Path
root = Path("project")
for p in root.rglob("*.csv"):
print("CSV:", p)
Pythonpathlib のメリット
- パス操作が直感的で読みやすい
rglob("*.csv")のようにパターン検索が簡単- サブフォルダも自動で探索してくれる
特定拡張子検索を安全かつ効率的に行うための考え方
- ファイルかフォルダかを必ず判定する
- 大文字小文字の揺れを吸収するために
lower()を使う - 複数拡張子を扱う場合はタプルでまとめる
- サブフォルダを含めるかどうかで
listdirとwalkを使い分ける - 大規模フォルダでは
os.walk()やpathlib.rglob()が高速
特定拡張子検索は、業務自動化の入口であり、ファイル処理のほぼすべての場面で役立つ重要スキルです。
