Python 業務自動化 | ファイル・フォルダ自動化:基本操作 - ファイル数カウント

Python Python
スポンサーリンク

ファイル数カウントは「フォルダの状態を把握する」ための基本操作

業務自動化では、フォルダ内のファイル数を数える場面がとても多くあります。
「未処理ファイルが何件あるか知りたい」「バックアップ対象のファイル数をログに残したい」「特定拡張子のファイル数だけ集計したい」など、日常業務の多くがこの操作に関係します。

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)
Python

pathlib のメリット

  • パス操作が直感的で読みやすい
  • rglob("*.csv") でサブフォルダも自動検索
  • 大規模プロジェクトの集計に最適

ファイル数カウントを正確に行うための考え方

  • ファイルとフォルダを必ず区別する(isfile の利用)
  • 大文字小文字の揺れを吸収するために lower() を使う
  • サブフォルダを含めるかどうかで listdir と walk を使い分ける
  • 複数拡張子を扱う場合は endswith のタプルを使う
  • 大規模フォルダでは pathlib.rglob が読みやすくて便利

ファイル数カウントは、業務自動化の入口であり、処理フローの判断材料として非常に重要な操作です。

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