Python のディレクトリとサブディレクトリにあるすべてのファイルを一覧表示する
-
os.walk()
を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する -
listdir()
を使用して、Python のディレクトリとサブディレクトリ内のすべてのファイルを一覧表示する -
glob
を使用して、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
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