Python でディレクトリ内のファイルをループする

Muhammad Waiz Khan 2023年1月30日
  1. os.listdir() メソッドを使用して Python のディレクトリ内のファイルをループする
  2. Python の pathlib.path().glob() メソッドを使ってディレクトリ内のファイルをループする
  3. Python の os.walk() メソッドを使ってディレクトリ内のファイルをループする
  4. Python の iglob() メソッドを用いてディレクトリ内のファイルをループスルーする
Python でディレクトリ内のファイルをループする

このチュートリアルでは、Python でディレクトリ内のファイルをループする様々な方法を説明します。ファイル共有、ファイル閲覧、ファイルロードのような機能を実装するために、ディレクトリ内のファイルを探す必要があります。

例えば、ファイル名があり、そのファイルからデータを読み込む必要があるとします。Python でディレクトリ内のファイルをループスルーするための様々な方法を説明します。

os.listdir() メソッドを使用して Python のディレクトリ内のファイルをループする

os モジュールの listdir() メソッドはディレクトリのパスを入力として受け取り、そのディレクトリにあるすべてのファイルのリストを返します。ディレクトリ内の特定のファイルを見つけたいので、必要なファイルを見つけるためにはファイル名をループさせる必要があります。以下のコード例は、Python の listdir() メソッドを使ってファイルを反復処理して特定のファイルを見つける方法を示しています。

import os

files = os.listdir("Desktop/myFolder")
myfile = "filename.txt"

for filename in files:
    if filename == myfile:
        continue

Python の pathlib.path().glob() メソッドを使ってディレクトリ内のファイルをループする

pathlib モジュールの path() メソッドは、ディレクトリのパス文字列を入力として受け取り、ディレクトリとサブディレクトリ内のすべてのファイルのパスのリストを返します。

検索するファイルが .txt ファイルであるとすると、path().glob() メソッドを用いて .txt ファイルのパスを取得できます。以下のコード例は、Python の path メソッドを用いてディレクトリ内のすべての .txt ファイルをループする方法を示しています。

from pathlib import Path

pathlist = Path("Desktop/myFolder").glob("**/*.txt")
myfile = "filename.txt"
for path in pathlist:
    if path.name == myfile:
        continue

パターン **/*.txt は、現在のフォルダとそのサブフォルダ内の txt 拡張子を持つすべてのファイルを返します。path.name はファイル名のみを返しますが、フルパスは返しません。

Python の os.walk() メソッドを使ってディレクトリ内のファイルをループする

os モジュールの walk() メソッドもまた、ディレクトリのパス文字列を入力として受け取り、ルートディレクトリのパス、サブディレクトリのリスト、カレントディレクトリとそのサブディレクトリにあるすべてのファイルのリストを文字列として返します。

名前 filename.txt を持つファイルを見つけるには、まずディレクトリ内のすべてのファイルを取得し、それらをループして目的のファイルを取得します。以下のコード例は、ディレクトリ内のファイルをループスルーしてファイルを見つける方法を示しています。

import os

myfile = "filename.txt"
for root, dirs, files in os.walk("Desktop/myFolder"):
    for file in files:
        if file == myfile:
            print(file)

Python の iglob() メソッドを用いてディレクトリ内のファイルをループスルーする

glob() モジュールの iglob() メソッドは、必要なファイルのディレクトリパスと拡張子を入力として受け取り、同じ拡張子を持つすべてのファイルのパスを返します。以下のコード例は、iglob() メソッドを用いてディレクトリ内のファイルをループし、必要なファイルを見つける方法を示しています。

import glob

for filepath in glob.iglob("drive/test/*.txt"):
    if filepath.endswith("/filename.txt"):
        print(filepath)

関連記事 - Python File