Python でディレクトリ内のファイルをループする
-
os.listdir()
メソッドを使用して Python のディレクトリ内のファイルをループする -
Python の
pathlib.path().glob()
メソッドを使ってディレクトリ内のファイルをループする -
Python の
os.walk()
メソッドを使ってディレクトリ内のファイルをループする -
Python の
iglob()
メソッドを用いてディレクトリ内のファイルをループスルーする
このチュートリアルでは、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)