【Python】任意のディレクトリのファイル数ランキングを作成するスクリプト

本ブログはアフィリエイト広告を利用しています

WEB / アプリ
WEB / アプリ
この記事は約3分で読めます。

とっちゃん@nyanco! です。

今回は任意のディレクトリ内の全てのサブディレクトリをチェックして、ファイル数の多い順にランキング表示するPythonコードの共有です。

肉玉にゃんこ

ストレージの整理などの作業時に便利ですにゃ~
似た機能のフリーソフトもありそうですがpythonでも簡単にできますにゃ〜

スポンサーリンク

コードの動作環境

  • OS:Windows11/macOS Sequoia 15.1
  • Pythonバージョン:3.11.2
  • 必要ライブラリ:
    • os(ファイルシステム操作用のライブラリ。Python標準
    • collections(Counter クラスを提供するライブラリ。Python標準

任意のディレクトリのファイル数ランキングを作成するスクリプト

早速ですがコードはこちら!

import os
from collections import Counter

def count_files_in_directories(root_dir):
    dir_file_counts = Counter()

    for dirpath, dirnames, filenames in os.walk(root_dir):
        dir_file_counts[dirpath] = len(filenames)

    return dir_file_counts

def list_top_directories(root_dir, top_n=20):
    dir_file_counts = count_files_in_directories(root_dir)
    top_directories = dir_file_counts.most_common(top_n)

    print(f"ファイル数が多い上位{top_n}個のディレクトリ:")
    for directory, file_count in top_directories:
        print(f"{directory}: {file_count}ファイル")

# 使用例
root_directory = r"C:\Program Files"
list_top_directories(root_directory)

コードは自動生成AI「perplexity」で作成したものを元にカスタマイズしています。

自分用にカスタマイズする箇所はコチラ

  • 12行目:【top_n=2020の数字を変更すると表示するランキング数を変更可能 ※デフォルトは20ランキング
  • 21行目:C:\Program Files】任意のディレクトリパスに変更 ※デフォルトはWindowsのプログラムファイルが格納されているディレクトリとしています。

パス前の「r」の意味は?
ちなみにroot_directory = r“C:\Program Files”rとは、Pythonにおいてraw string(生文字列)を表しています。具体的に言うと、続く文字列内のバックスラッシュ(\)がエスケープ文字として解釈されなくなり、そのままディレクトリの階層を表すバックスラッシュとして認識されるようになります(逆に言うと「r」がないとバックスラッシュが機能しない)。Windowsのファイルパスやディレクトリパスを扱う際に特に有用となります。

以下、python実行後の流れです。

▼実行すると以下のようにファイル数が多い順にディレクトリを表示してくれます。

ほとんどがAdobe関連ファイルですね ^^;
肉玉にゃんこ

ファイル数が多いと表示されるまでそれなりに時間がかかりますにゃ~

接続しているネットワークドライブなども対象にできるので使い勝手は高いと思います。

▼サクッとすぐに使えるように下記より.pyファイルのダウンロードも可能です(zip圧縮しています)。

→任意のディレクトリのファイル数ランキングを作成する.pyファイルをダウンロード

おわりに

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント