Python|ディレクトリ内のファイル一覧を取得する

1. はじめに

Pythonでファイル操作を行う際に欠かせないのが「ディレクトリ内のファイル一覧を取得する」処理です。たとえば、あるフォルダ内の画像ファイルを一括で処理したいときや、特定のログファイルだけを抽出したいときに便利です。

本記事では、Python初心者〜中級者を対象に、ディレクトリ内のファイル一覧を取得する方法を丁寧に解説します。標準ライブラリであるosglobpathlibを活用し、実務でも使える具体的なコード例とともに紹介していきます。

 

2. Pythonでディレクトリ内のファイル一覧を取得する基本

2-1. os.listdir() を使う方法

最も基本的な方法は、Python標準ライブラリの os モジュールを使うことです。os.listdir() を使えば、指定したディレクトリ内のファイル・フォルダの一覧を取得できます。

import os

# 指定ディレクトリ内の一覧を取得
files = os.listdir("sample_dir")
print(files)

実行結果:

['file1.txt', 'file2.csv', 'subdir']

この方法では、ファイルとフォルダの両方が取得される点に注意しましょう。

2-2. os.pathを使ってファイルのみ取得する

os.listdir()ではフォルダも含まれてしまうため、ファイルだけを抽出したい場合はos.path.isfile()を組み合わせます。

import os

dir_path = "sample_dir"
files = [f for f in os.listdir(dir_path) if os.path.isfile(os.path.join(dir_path, f))]
print(files)

実行結果:

['file1.txt', 'file2.csv']

2-3. globモジュールで拡張子を指定して取得

特定の拡張子だけを取得したいときは、globモジュールを使うのが便利です。

import glob

# .txtファイルだけを取得
files = glob.glob("sample_dir/*.txt")
print(files)

実行結果:

['sample_dir/file1.txt']

2-4. pathlibを使う方法(Python 3.4以降)

pathlibは、オブジェクト指向でパス操作ができる便利なモジュールです。

from pathlib import Path

dir_path = Path("sample_dir")
files = [f.name for f in dir_path.iterdir() if f.is_file()]
print(files)

実行結果:

['file1.txt', 'file2.csv']

 

3. よくある使い方・応用例

3-1. サブディレクトリも含めてすべてのファイルを取得(再帰)

サブディレクトリ内のファイルも含めて一覧を取得したい場合、os.walk()glob.glob("**/*", recursive=True)を使います。

import os

all_files = []
for root, dirs, files in os.walk("sample_dir"):
    for f in files:
        all_files.append(os.path.join(root, f))

print(all_files)

実行結果:

['sample_dir/file1.txt', 'sample_dir/subdir/file3.txt']

3-2. pathlibで再帰的にファイル一覧を取得

from pathlib import Path

files = [str(p) for p in Path("sample_dir").rglob("*") if p.is_file()]
print(files)

実行結果:

['sample_dir/file1.txt', 'sample_dir/subdir/file3.txt']

3-3. ファイルの更新日時・サイズと一緒に表示する

import os
from datetime import datetime

dir_path = "sample_dir"
for f in os.listdir(dir_path):
    full_path = os.path.join(dir_path, f)
    if os.path.isfile(full_path):
        size = os.path.getsize(full_path)
        mtime = os.path.getmtime(full_path)
        print(f"{f} - {size} bytes - 更新日時: {datetime.fromtimestamp(mtime)}")

実行結果:

file1.txt - 1234 bytes - 更新日時: 2025-07-15 09:00:00

 

4. 注意点・エラー対策

4-1. ディレクトリが存在しない場合の対策

存在しないディレクトリを指定すると、FileNotFoundErrorが発生します。事前にos.path.exists()でチェックすると安全です。

import os

dir_path = "not_exist_dir"
if os.path.exists(dir_path):
    print(os.listdir(dir_path))
else:
    print("ディレクトリが存在しません")

4-2. 権限エラー(PermissionError)

一部のシステムディレクトリでは、読み取り権限がないことがあります。この場合はPermissionErrorが出るため、try-exceptで対処しましょう。

try:
    files = os.listdir("/root")
    print(files)
except PermissionError:
    print("権限がありません")

 

5. まとめ

今回はPythonでディレクトリ内のファイル一覧を取得する方法を、複数の標準ライブラリ(os、glob、pathlib)を使って解説しました。基本的なos.listdir()から、再帰的取得、更新日時の取得など、実務でも役立つコード例を紹介しました。

実際の現場では、ファイルの一覧取得は自動処理やログ解析、データ集計など幅広い用途で使われます。ぜひ自分のプロジェクトに応じて、最適な方法を選んでみてください。

💡学習のコツ:最初はosで基本を学び、慣れてきたらpathlibで読みやすいコードに挑戦しましょう。

タイトルとURLをコピーしました