Python のディレクトリとサブディレクトリにあるすべてのファイルを一覧表示する

  1. os.walk() を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する
  2. listdir() を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する
  3. glob を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する
Python のディレクトリとサブディレクトリにあるすべてのファイルを一覧表示する

Python には、ディレクトリおよびサブディレクトリ内のファイルのリストにアクセスするための多くの方法が用意されています。このガイドでは、os.walk()listdir()、および glob について説明します。

os.walk() を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する

Python の os モジュールは、オペレーティングシステムと対話する手段を提供します。ファイルシステムを処理する多くの組み込み関数があります。

このモジュールを使用して、ディレクトリをフェッチ、作成、削除、および変更できます。walk() は、トップダウンまたはボトムアップのいずれかの方法でディレクトリツリーにファイル名を生成する再帰メソッドです。

次のコードでは、MyFolder のディレクトリとサブディレクトリにあるファイルを表示しています。この場合、このフォルダーは Python の環境のホームディレクトリにあります。

サンプルコード:

import os  root = "MyFolder" for path, subdirs, files in os.walk(root):  for name in files:  print(os.path.join(path, name)) 

出力:

MyFolder\text_file1.txt MyFolder\text_file2.txt MyFolder\SubFolder1\text_file3.txt MyFolder\SubFolder1\text_file4.txt 

listdir() を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する

次のコードでは、walk メソッドを使用せずに、ディレクトリツリーをトラバースし、そのファイルとサブファイルにアクセスします。開始点としてルートフォルダ MyFolder を指定しました。

次に、listdir() を使用してそのフォルダのディレクトリとサブディレクトリにアクセスし、それらをアイテムに保存しました。アイテム名を前のパスと連結し、isdir() メソッドを使用してそれがディレクトリであるかどうかを確認しました。

その場合は、そのディレクトリをさらに検索して、同じ手順を適用します。以前のパスがファイル名の場合はファイル名を追加して表示しました。

サンプルコード:

import os  root = "MyFolder" files = [] walk = [root] while walk:  folder = walk.pop(0) + "/"  items = os.listdir(folder) # items = folders + files  for i in items:  i = folder + i  (walk if os.path.isdir(i) else files).append(i) print(files) 

出力:

['MyFolder/text_file1.txt', 'MyFolder/text_file2.txt', 'MyFolder/SubFolder1/text_file3.txt', 'MyFolder/SubFolder1/text_file4.txt'] 

glob を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する

glob は、global を表す Python の組み込みモジュールです。このモジュールは、名前と拡張子が特定のパターンに一致するすべてのファイルパスを返します。

ここでは、*.*を使用しました。これは、拡張子が付いたファイル名を示します。glob.glob() を使用して、ディレクトリまたはサブディレクトリ内のファイルを再帰的に検索します。

再帰が True に設定されている場合、パターン**はすべてのファイルと 0 個以上のフォルダおよびサブディレクトリに一致します。

サンプルコード:

import glob  path = "MyFolder\**\*.*" for file in glob.glob(path, recursive=True):  print(file) 

出力:

MyFolder\text_file1.txt MyFolder\text_file2.txt MyFolder\SubFolder1\text_file3.txt MyFolder\SubFolder1\text_file4.txt 
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python Directory