読み込み中...

Pythonでディレクトリをカウントする5つの手順

Pythonでディレクトリをカウントする方法を説明する記事のサムネイル Python
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

みなさん、こんにちは。

今日はPythonという人気のプログラミング言語を用いて、ディレクトリの数をカウントする方法について学んでいきましょう。

この記事を読めば、Pythonを使ったディレクトリのカウント方法が自然と身につき、その知識を用いてPythonの理解を深め、より複雑なプログラムの作成につなげることができるようになります。

具体的なサンプルコードとその解説を交えながら、Pythonでディレクトリをカウントする5つの手順を解説していきます。

●Pythonとは

Pythonは、よく一緒に用いられるデータ分析や機械学習、ウェブ開発など、様々な用途に利用されるプログラミング言語です。

○Pythonの特徴

Pythonはそのコードが非常に読みやすいという特徴を持ち、初めてプログラミングを学ぶ人にもとても学びやすい言語として知られています。

また、Pythonは豊富なライブラリを持っており、データ分析や機械学習、ウェブ開発などの幅広い分野で活躍します。

●Pythonでディレクトリをカウントする方法

それでは具体的にPythonを用いて、ディレクトリをカウントする方法を見ていきましょう。

○Pythonでディレクトリを操作するための前準備

Pythonでディレクトリを操作するためには、まずは必要なモジュールをインポートする必要があります。

import os

これはPythonの標準ライブラリであるosモジュールをインポートしています。

osモジュールは、オペレーティングシステムとのやり取りを担当するモジュールで、ディレクトリやファイルの操作を行うためにはこのモジュールが必要となります。

○サンプルコード1:osモジュールをインポートする

osモジュールのインポート方法を紹介します。

import os

このコードは、Pythonの標準ライブラリであるosモジュールをインポートしています。

このosモジュールを利用することで、ディレクトリやファイルの操作を行うことが可能になります。

○サンプルコード2:ディレクトリのリストを取得する

次に、特定のディレクトリの下にある全てのディレクトリのリストを取得するコードを見てみましょう。

dir_path = '/path/to/your/directory'
directories = [name for name in os.listdir(dir_path) if os.path.isdir(os.path.join(dir_path, name))]

このコードでは、指定したパス(’dir_path’)下の全てのディレクトリのリストを取得しています。

os.listdir(dir_path)は、指定したディレクトリ下の全てのファイルとディレクトリの名前のリストを返します。

その後、os.path.isdir(os.path.join(dir_path, name))を用いて、それらがディレクトリかどうかを判断し、ディレクトリのみをdirectoriesリストに格納しています。

○サンプルコード3:ディレクトリ数をカウントする

取得したディレクトリのリストの長さを求めることで、ディレクトリの数をカウントすることができます。

num_directories = len(directories)

このコードでは、Pythonの組み込み関数であるlen()を用いて、ディレクトリのリストdirectoriesの長さ、つまりディレクトリの数を求めています。

○サンプルコード4:結果を出力する

最後に、求めたディレクトリの数を出力します。

print(f'Number of directories: {num_directories}')

このコードでは、Pythonのf文字列(フォーマット済み文字列リテラル)を使って、求めたディレクトリの数を出力しています。

{num_directories}の部分がnum_directoriesの値に置き換えられ、その結果が表示されます。

○サンプルコード5:エラーハンドリングを行う

プログラムを書く際には、エラーが起きても適切に処理できるようにエラーハンドリングを行うことが重要です。

例えば、存在しないディレクトリパスが指定された場合のエラーハンドリングを考えてみましょう。

try:
    dir_path = '/path/to/your/directory'
    directories = [name for name in os.listdir(dir_path) if os.path.isdir(os.path.join(dir_path, name))]
    num_directories = len(directories)
    print(f'Number of directories: {num_directories}')
except FileNotFoundError:
    print('Directory not found. Please check the directory path.')

このコードでは、Pythonのtry-except文を用いて、エラーハンドリングを行っています。

指定したディレクトリが存在しない場合、os.listdir(dir_path)FileNotFoundError

発生します。その場合、exceptブロックが実行され、「Directory not found. Please check the directory path.」というメッセージが表示されます。

●応用例:Pythonでサブディレクトリをカウントする

以上でディレクトリをカウントする基本的な手順を見てきましたが、これを応用して、サブディレクトリを再帰的にカウントする方法もあります。

○サンプルコード6:サブディレクトリをカウントする

サブディレクトリを再帰的にカウントするコードを紹介します。

import os

def count_subdirectories(dir_path):
    count = 0
    for root, dirs, files in os.walk(dir_path):
        count += len(dirs)
    return count

dir_path = '/path/to/your/directory'
num_directories = count_subdirectories(dir_path)
print(f'Number of directories: {num_directories}')

このコードでは、新たにcount_subdirectoriesという関数を定義しています。

この関数は、指定したディレクトリからサブディレクトリを再帰的に探索し、その総数をカウントします。

os.walk(dir_path)は、指定したディレクトリからサブディレクトリを再帰的に探索し、それぞれのディレクトリでルートディレクトリのパス、そのディレクトリ内のディレクトリ名のリスト、そのディレクトリ内のファイル名のリストを返します。

ループでこれを繰り返し、それぞれのディレクトリでディレクトリ名のリスト(dirs)の長さをカウントに加えていきます。

●Pythonでディレクトリをカウントする際の注意点と対処法

Pythonを使ってディレクトリをカウントする際には、次の三つの主要な注意点と対処法を押さえておきましょう。

①パスの指定

パスは正確に指定する必要があります。

間違ったパスを指定するとFileNotFoundErrorが発生します。

対処法としては、パスが正しいかを確認し、必要であれば絶対パスを用いてください。

絶対パスはシステム上での一意のファイルやディレクトリの位置を表すため、間違いがないことが確認できます。

②アクセス権限

指定したディレクトリに対するアクセス権限がないと、エラーが発生します。適切なアクセス権限があることを確認してください。

Pythonがファイルやディレクトリを読み取るためには、そのファイルやディレクトリに対する適切なアクセス権限が必要です。

アクセス権限が不足している場合、PermissionErrorというエラーが発生します。

③ディレクトリの深さ

サブディレクトリを再帰的にカウントする場合、ディレクトリの深さが大きいと時間がかかることがあります。

ディレクトリの深さを考慮に入れることが重要です。

特に、大規模なプロジェクトやディレクトリ構造で作業をする場合は、この点に注意が必要です。

●Pythonでディレクトリをカウントする方法のカスタマイズ

Pythonを使ってディレクトリをカウントする方法は、様々な状況に応じてカスタマイズ可能です。

その一つとして、特定の拡張子を持つファイルが含まれるディレクトリだけをカウントする方法を紹介します。

下記のサンプルコードは、指定されたディレクトリとそのサブディレクトリの中で、’.txt’という拡張子のファイルが存在するディレクトリだけをカウントします。

import os

def count_directories_with_txt_files(dir_path):
    count = 0
    for root, dirs, files in os.walk(dir_path):
        for file in files:
            if file.endswith('.txt'):
                count += 1
                break
    return count

dir_path = '/path/to/your/directory'
num_directories = count_directories_with_txt_files(dir_path)
print(f'Number of directories with .txt files: {num_directories}')

このコードではos.walk関数を用いてディレクトリとそのサブディレクトリを走査しています。

各ディレクトリで、そのディレクトリ内のファイル名のリスト(files)に対してループを実行し、各ファイルについてその名前が’.txt’で終わるかどうか(つまり、そのファイルがテキストファイルかどうか)を判定します。

テキストファイルが見つかった場合、カウントを1増やし、そのディレクトリ内の他のファイルは調べないようにループから抜け出します(break)。

まとめ

Pythonを使ってディレクトリをカウントする方法は、それ自体はシンプルですが、具体的な使用状況により、様々なカスタマイズが可能です。

また、ディレクトリパスの正確な指定、適切なアクセス権限の確認、ディレクトリの深さの考慮など、実装時に注意すべき点もあります。

これらの要点を理解し、Pythonでのディレクトリ操作を習熟させることで、より広範で効率的なデータ操作が可能となります。

本記事がPythonを使ったディレクトリのカウント手法の理解に役立てば幸いです。