ファイル数カウントは「フォルダの状態を把握する」ための基本操作
業務自動化では、フォルダ内のファイル数を数える場面がとても多くあります。
「未処理ファイルが何件あるか知りたい」「バックアップ対象のファイル数をログに残したい」「特定拡張子のファイル数だけ集計したい」など、日常業務の多くがこの操作に関係します。
Pythonでは os.listdir(), os.walk(), pathlib を使うことで、初心者でも安全かつ確実にファイル数をカウントできます。
ここでは、基本から実務テンプレートまで丁寧に解説します。
フォルダ直下のファイル数をカウントする基本
listdir と isfile を使った最小構成
import os
folder = "data"
count = 0
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
count += 1
print("ファイル数:", count)
Python深掘りポイント
os.listdir()は「ファイル+フォルダ」を返すため、isfile() でファイルだけに絞る必要がある- フォルダ数を含めないために、この判定は必須
- これが「最も基本的なファイル数カウント」の形
特定拡張子だけをカウントする
例:CSV ファイルだけ数えたい
import os
folder = "data"
count = 0
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path) and name.lower().endswith(".csv"):
count += 1
print("CSVファイル数:", count)
Python深掘りポイント
lower()を使うことで.CSVのような大文字にも対応- 拡張子検索と組み合わせることで「対象ファイルだけ」を正確に数えられる
サブフォルダも含めてカウントする(再帰検索)
os.walk を使った階層全体のファイル数カウント
import os
root = "project"
count = 0
for current, dirs, files in os.walk(root):
for name in files:
count += 1
print("全階層のファイル数:", count)
Python深掘りポイント
os.walk()は階層を自動で潜ってくれる- 大規模フォルダでも高速
- 「プロジェクト全体のファイル数を知りたい」業務で必須
例題①:未処理フォルダのファイル数をカウントして処理可否を判断する
シナリオ
inbox フォルダに未処理ファイルが何件あるかを確認し、
0件なら「処理なし」、1件以上なら「処理開始」と判断したい。
import os
folder = "inbox"
count = sum(
1 for name in os.listdir(folder)
if os.path.isfile(os.path.join(folder, name))
)
if count == 0:
print("未処理ファイルなし")
else:
print("未処理ファイル数:", count)
Python深掘りポイント
sum(1 for ...)を使うと「数えるだけ」の処理が簡潔に書ける- バッチ処理の前段でよく使うパターン
例題②:特定拡張子のファイル数をログに記録する
シナリオ
バックアップ前に「対象ファイル数」をログに残したい。
import os
from datetime import datetime
folder = "data"
log_file = "count.log"
count = 0
for name in os.listdir(folder):
if name.lower().endswith(".txt"):
count += 1
with open(log_file, "a", encoding="utf-8") as f:
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
f.write(f"{now}\tTXTファイル数: {count}\n")
print("ログに記録しました:", count)
Python深掘りポイント
- 「数える → ログに残す」は業務自動化で非常に重要
- 日次バッチやバックアップ処理でよく使われる
例題③:サブフォルダを含めて画像ファイル数をカウントする
シナリオ
プロジェクト全体から .jpg と .png の数を集計したい。
import os
root = "project"
count = 0
for current, dirs, files in os.walk(root):
for name in files:
if name.lower().endswith((".jpg", ".jpeg", ".png")):
count += 1
print("画像ファイル数:", count)
Python深掘りポイント
- 複数拡張子を扱う場合はタプルで endswith を使う
- 大規模フォルダでも高速に動作
pathlib を使ったモダンで読みやすいカウント方法
rglob を使うと直感的に書ける
from pathlib import Path
root = Path("project")
count = sum(1 for _ in root.rglob("*.csv"))
print("CSVファイル数:", count)
Pythonpathlib のメリット
- パス操作が直感的で読みやすい
rglob("*.csv")でサブフォルダも自動検索- 大規模プロジェクトの集計に最適
ファイル数カウントを正確に行うための考え方
- ファイルとフォルダを必ず区別する(isfile の利用)
- 大文字小文字の揺れを吸収するために lower() を使う
- サブフォルダを含めるかどうかで listdir と walk を使い分ける
- 複数拡張子を扱う場合は endswith のタプルを使う
- 大規模フォルダでは pathlib.rglob が読みやすくて便利
ファイル数カウントは、業務自動化の入口であり、処理フローの判断材料として非常に重要な操作です。
