Python - フォルダ内(ディレクトリ)のファイル一覧を取得する

フォルダ内のファイルを列挙する方法を4種類、解説します。(pathlib、glob、os.scandir、os.listdir)

フォルダ内のファイル一覧を取得する方法

pathlib、glob、os.scandir、os.listdir を使用したサンプルプルグラムです。どのサンプルも同じ結果を返します。

pathlib

pathlib はオブジェクト指向のファイルパスを扱うクラスです。Python バージョン 3.4 以降が必要ですが、慣れると最も便利です。
from pathlib import Path

# Path オブジェクトを生成
targetPath = Path('./temp')

# ファイルを列挙(結果は Pathクラスのgenerator で返る)
for item in targetPath.glob('./*'):
    print(f'-----------------------------------------')
    print(f'ファイル名  = {item.name}')
    print(f'絶対パス    = {item.absolute()}')
    print(f'フォルダか? = {item.is_dir()}')
    print(f'ファイルか? = {item.is_file()}')

glob

globモジュール を使用すると、globパターン(例: *.txt) でファイルを検索できます。
import glob
import os

# ファイルを列挙(結果はパスがリストで返る)
pathList = glob.glob('./temp/*')
for path in pathList:
    print(f'-----------------------------------------')
    print(f'ファイル名  = {os.path.basename(path)}')
    print(f'絶対パス    = {os.path.abspath(path)}')
    print(f'フォルダか? = {os.path.isdir(path)}')
    print(f'ファイルか? = {os.path.isfile(path)}')

os.scandir 関数

os.scandir 関数に フォルダのパス を渡すと、検索結果が DirEntryオブジェクト で返ります。
import os

# ファイルを列挙
with os.scandir(path='./temp') as it:
    for entry in it:
        print(f'-----------------------------------------')
        print(f'ファイル名  = {entry.name}')
        print(f'絶対パス    = {os.path.abspath(entry.path)}')
        print(f'フォルダか? = {entry.is_dir()}')
        print(f'ファイルか? = {entry.is_file()}')

os.listdir 関数

os.listdir 関数に フォルダのパス を渡すと、フォルダ内のファイル名がリストで返ります。
import os

# 対象フォルダのパス
target = './temp'

# ファイルを列挙(ファイル名がリストで返される)
filenameList = os.listdir(path=target)
for filename in filenameList:
    # 返されるのはファイル名なので、パスを組み立てる
    abspath = os.path.abspath(os.path.join(target, filename))
    print(f'-----------------------------------------')
    print(f'ファイル名  = {filename}')
    print(f'絶対パス    = {abspath}')
    print(f'フォルダか? = {os.path.isdir(abspath)}')
    print(f'ファイルか? = {os.path.isfile(abspath)}')

サブフォルダ内も再帰的に取得したい場合

次の記事を参照してください。

検証環境