Python でサブディレクトリを一覧表示する

Muhammad Maisam Abbas 2023年1月30日
  1. Python の glob モジュールでサブディレクトリを一覧表示する
  2. Python の os.scandir() 関数を使用してサブディレクトリを一覧表示する
  3. Python の os.walk() 関数を使用してサブディレクトリを一覧表示する
Python でサブディレクトリを一覧表示する

Python で指定されたディレクトリ内のすべてのサブディレクトリを一覧表示するために使用できる 3つの効果的なメソッドがあります。glob.glob() 関数、os.scandir() 関数、および os.walk() 関数です。このチュートリアルでは、これらの関数を使用して Python でサブディレクトリを一覧表示する方法を示します。

Python の glob モジュールでサブディレクトリを一覧表示する

glob モジュールは、特定のパターンに一致するパス名を取得するために使用されます。Python の glob モジュール内の glob() 関数を使用して、ディレクトリパスの最後に/*/を指定することにより、指定したメインディレクトリのすべてのサブディレクトリを一覧表示できます。次のプログラムスニペットは、glob モジュールを使用してメインディレクトリ内のすべてのサブディレクトリを一覧表示する方法を示しています。

import os
from glob import glob

glob(os.getcwd() + "/*/", recursive=True)

出力:

['/content/sample_data/', '/content/subdirectory/']

上記のコードの glob モジュールを使用して、現在の作業ディレクトリのすべてのサブディレクトリを一覧表示しました。この方法の欠点は、隠しディレクトリまたはディレクトリ名がピリオド . で始まるディレクトリが表示されないことです。直接のサブディレクトリのみが表示されます。

Python の os.scandir() 関数を使用してサブディレクトリを一覧表示する

os は Python の組み込みモジュールであり、ファイルストレージなどのオペレーティングシステム関連の多くの機能に使用できます。os.scandir() 関数を使用して、指定したメインディレクトリのすべてのサブディレクトリを一覧表示できます。この関数は、ディレクトリパスを入力パラメータとして受け取り、パス内のファイルとディレクトリを反復処理するために使用できるイテレータを返します。

次のコードスニペットは、os.scandir() 関数を使用してメインディレクトリ内のすべてのサブディレクトリを一覧表示する方法を示しています。

import os

[f.path for f in os.scandir(os.getcwd()) if f.is_dir()]

出力:

['/content/.config',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/subdirectory']

上記のコードの os.scandir() 関数を使用して、現在の作業ディレクトリのすべてのサブディレクトリを一覧表示しました。このプロセスは、隠しディレクトリまたはディレクトリ名がピリオド . で始まるディレクトリも一覧表示するため、以前のアプローチを改善したものです。この方法の唯一の欠点は、メインの親ディレクトリの直接の子ディレクトリしか表示されないことです。メインディレクトリ内のサブサブディレクトリは取得しません。

Python の os.walk() 関数を使用してサブディレクトリを一覧表示する

os.walk() 関数は、Python の単一のメインディレクトリ内のすべてのサブディレクトリを一覧表示するために使用できる別のメソッドです。os.walk() 関数は、メインディレクトリのパスを入力パラメータとして受け取り、タプルのセットを返します。各タプルの最初の要素は、ディレクトリツリー内のサブディレクトリのパスです。これには、ディレクトリツリーが終了するまでのすべてのサブディレクトリとそのサブサブディレクトリが含まれます。

os.walk() 関数は、隠しディレクトリまたはディレクトリ名がピリオド . で始まるディレクトリも提供します。次のコードスニペットは、os.walk() 関数を使用してメインディレクトリ内のすべてのサブディレクトリを一覧表示する方法を示しています。

import os

[x[0] for x in os.walk(os.getcwd())]

出力:

['/content',
 '/content/.config',
 '/content/.config/logs',
 '/content/.config/logs/2021.05.06',
 '/content/.config/configurations',
 '/content/.ipynb_checkpoints',
 '/content/sample_data',
 '/content/sample_data/.ipynb_checkpoints',
 '/content/sample_data/subsubdirectory',
 '/content/subdirectory']

上記のプログラムの os.scandir() 関数を使用して、現在の作業ディレクトリのすべてのサブディレクトリを一覧表示しました。ご覧のとおり、出力にはディレクトリツリー内のすべてのディレクトリが表示されます。結果には、すべての隠しディレクトリも含まれます。

os.walk() アプローチでは、すべてのサブディレクトリとすべての隠しディレクトリを持つサブディレクトリが表示されますが、上記のすべてのメソッドには独自のユースケースがあり、さまざまなシナリオで役立ちます。私たちが議論したものの中で最良のアプローチは、あなたが解決しようとしている特定の問題に依存します。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python Directory