

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
os.walkとは
os.walkは Python の os モジュールにある関数です。ディレクトリの中を下層まで再帰的にたどっていき、各ディレクトリの情報を順番に出してくれます。初心者にも分かりやすいように言い換えると、ディレクトリの地図を作る道具のようなものです。os.walkを使うと写真(関連記事:写真ACを三ヵ月やったリアルな感想【写真を投稿するだけで簡単副収入】)や文書の一覧を作成したり、特定の拡張子を持つファイルだけを集めたり、フォルダの構成を調べたりと、日常の作業を自動化できます。
動作の基本
os.walkはディレクトリツリーを下へと歩くイメージの関数です。for ループで回すと、root, dirs, files の3つの値を順番に取得できます。root は現在見ているディレクトリのパス、dirs はその下にあるサブディレクトリ名のリスト、files はそのディレクトリ内のファイル名のリストです。これらを使って、目的の処理を組み立てます。
使い方の基本
基本的な使い方はとてもシンプルです。まず起点となるパスを決めます。例えば現在のディレクトリなら path を '.' とします。
次に os.walk(path) を回して root, dirs, files を取り出します。ループ内ではファイルのフルパスを作るために os.path.join を使い、必要な情報を print したり 保存したりします。実用的な例として、特定の拡張子を持つファイルだけを列挙する方法を後に示します。
| 説明 | |
|---|---|
| root | 現在のディレクトリのパス |
| dirs | そのディレクトリ配下のサブディレクトリ名のリスト |
| files | そのディレクトリ内のファイル名のリスト |
サンプルコード
以下は現在のディレクトリを起点に全てのファイルのパスを出力する基本的な例です。
<span>for root, dirs, files in os.walk('.')
for name in files:
full_path = os.path.join(root, name)
print(full_path)
このコードを実際に動かすと、現在のフォルダ配下のすべてのファイルの絶対パスまたは相対パスが順番に表示されます。ポイントは root の階層を変えながら dirs と files を同時に見ていく点と、os.path.join を使ってパスを作る点です。
よくある注意点と活用のヒント
・topdown の設定を変えると探索の順序が変わります。デフォルトは True で、最初に親ディレクトリを処理してから子ディレクトリに進みます。
・オンエラー時の挙動は onerror で指定できます。指定した関数を呼び出してエラーを処理します。
・特定のディレクトリを探索対象から外したい場合は dirs の内容を変更します。これにより、不必要なサブツリーをスキップできます。
os.walk は慣れるとファイル整理やデータ収集の自動化に欠かせない道具です。最初は小さなディレクトリから始め、徐々に条件を追加していくと良いでしょう。
os.walkの同意語
- ディレクトリツリーを走査する
- ファイルシステムのディレクトリ階層をトップレベルから再帰的に巡回して中身を列挙する処理のこと
- ディレクトリ構造を再帰的に探索する
- 階層的なフォルダ構造を再帰的に見て、各ディレクトリの中身(フォルダ・ファイル)を取得する作業
- ファイルシステムの遍歴
- ディレクトリとファイルの全体を辿って出力する、木構造に沿った探索のこと
- ディレクトリ内のファイルとサブディレクトリの列挙を再帰的に行う
- 現在のディレクトリ以下を再帰的に調べ、ファイルとサブディレクトリを列挙する操作
- 木構造の巡回
- フォルダ階層を木構造として順次辿って要素を取り出す処理
- 階層構造の探索
- 階層状のディレクトリを順番に探索して中身を確認すること
- 再帰的ディレクトリ探索
- ディレクトリを再帰的に探索して全要素を取得する手法
- ディレクトリツリーの遍歴
- ディレクトリの階層構造を全体的に巡回して各要素を取得すること
- ディレクトリ階層のスキャン
- 階層構造をスキャンしてディレクトリとファイルの一覧を作成する作業
- ルートディレクトリから子ディレクトリを辿る探索
- トップレベルから開始して階層を下っていく探索の意味
- フォルダ構造の巡回
- フォルダの階層を順に辿って中身を集める作業
- サブディレクトリを再帰的に辿る処理
- サブディレクトリを再帰的に追跡して全体を把握する
- ファイル一覧とサブフォルダの再帰的取得
- ファイルとサブフォルダを再帰的に列挙・取得する操作
- ディレクトリツリーのスキャン
- ディレクトリ階層全体を探索して中身を一覧化するプロセス
- ファイルシステムツリーの探索
- ファイルとフォルダの木構造を辿って中身を取得する作業
- 階層的走査
- 階層構造を横断的に巡回して全要素を拾い上げる操作
- ディレクトリ整理のための遍歴処理
- ディレクトリ構造を整理する目的で全階層を巡回する処理
os.walkの対義語・反対語
- 非再帰的ディレクトリ列挙
- 指定ディレクトリの直下だけを列挙する方法。os.listdir() や os.scandir() を使い、ディレクトリ階層を再帰的に辿らない点が os.walk の対義語的な使い方です。
- 一階層のみ列挙
- 対象ディレクトリの直下にあるエントリのみをリストする考え方。再帰を使わずに階層を跨がない点が特徴です。
- トップダウン走査
- os.walk のデフォルトの走査順。親ディレクトリを先に処理してから子ディレクトリへ進む方法です。階層を深く辿る前に親の情報を得たいときに使います。
- ボトムアップ走査
- os.walk でトップダウンを False にしたときの走査順。子ディレクトリを先に処理してから親ディレクトリを処理します。再帰的な検索結果を親ディレクトリの後に集約したいときに有用です。
- 再帰なし探索
- 再帰を使わずにディレクトリの中身を探索する総称。os.listdir や os.scandir を使うのが一般的です。
- globによる非再帰列挙
- glob モジュールを使い、現在のディレクトリ直下のファイル・ディレクトリを再帰せずに列挙する方法。パターンにより絞り込みができます。
- ファイルツリーの平坦化
- ディレクトリツリーの階層を無視して、ファイルを平坦なリストとして扱う考え方。os.walk とは異なるアプローチで全ファイルを横断的に列挙するイメージです。
- 歴史的な os.path.walk
- Python 2 で使われていた古いディレクトリ探索関数。現在は廃止され、os.walk の直接的な代替にはなりません。
os.walkの共起語
- os
- Python標準ライブラリのOS操作用モジュール。ファイル・ディレクトリ周りの機能の土台。
- Python
- os.walkを使う前提となるプログラミング言語。
- ディレクトリ
- フォルダ。os.walkが走査する対象。
- ディレクトリツリー
- ディレクトリが階層状につながった構造全体。
- 階層構造
- ディレクトリの階層的な配置。
- 再帰
- 子ディレクトリを再帰的に走査する考え方。os.walkの動作の背景にある概念。
- 生成器
- yieldで値を順に返す関数の性質。os.walkは生成器として動く。
- ジェネレータ
- 生成器と同義。
- dirpath
- 現在処理中のディレクトリのパスを表すタプルの一部。
- dirnames
- 現在のディレクトリ直下のサブディレクトリ名リスト。
- filenames
- 現在のディレクトリ直下のファイル名リスト。
- topdown
- 走査の順序を上位ディレクトリから先に処理するかを制御する引数。
- onerror
- 走査中にエラーが発生した際の処理を指定する引数。
- followlinks
- シンボリックリンクを辿るかどうかを決める引数。
- symlink
- シンボリックリンクそのもの、リンクとして扱う話題で登場。
- os.listdir
- ディレクトリの中身を一覧する別関数。代替・補助として使われることがある。
- os.path
- パス操作を行う補助モジュール。
- os.sep
- OS依存のパス区切り文字(/ または \)。
- os.path.join
- パス要素を正しく結合して完全なパスを作る関数。
- glob
- ファイル名のパターンにマッチさせて検索する機能。
- pathlib
- 現代的なパス操作モジュール。os.walkの補助として使われることがある。
- path
- ファイルやディレクトリの場所を指す概念。
- ファイル
- データを格納する基本要素。os.walkはファイル名を返す。
- ファイル名
- ファイルの名前の部分。filenamesの要素。
- 拡張子
- ファイル種別を示す文字列。フィルタリング時に使われる。
- 拡張子で絞り込み
- 特定の拡張子だけを対象にする処理。
- エラーハンドリング
- 走査時のエラーをどう対処するかの考え方。
- OSError
- OS操作で発生する例外。
- Unicode
- パス名の文字コード。日本語パスの扱いに影響。
- Windows
- Windows環境のパス表現・挙動。
- Unix
- Unix系環境のパス表現・挙動。
- メモリ効率
- 大量のファイルを扱う場合のメモリ使用を抑える観点。
- パフォーマンス
- 処理速度や資源の使用量に関する話題。
- 現在のディレクトリの意味
- dirpathが指す現在の探索対象を指す説明。
- サブディレクトリの意味
- dirnamesに含まれる子ディレクトリの集合の説明。
- ファイル一覧の意味
- filenamesに含まれるファイル名の集合の説明。
- 結果の構造
- os.walkが返す要素の構造(dirpath, dirnames, filenames)の説明。
os.walkの関連用語
- os.walk
- Python標準ライブラリのosモジュールに含まれる、指定ディレクトリ以下を再帰的に走査するジェネレータ関数。dirpath・dirnames・filenamesの3要素のタプルを順番に返します。
- os
- Pythonの標準ライブラリで、OS依存の機能(ファイル・ディレクトリ操作など)を提供するモジュール。
- pathlib
- ファイルパス操作の新しいAPI。Pathオブジェクトを使って直感的にファイル・ディレクトリを扱えます。os.walkの補助や代替としても便利です。
- os.path
- パス文字列を扱うユーティリティ群。パスの結合、分解、正規化などを行います。
- os.scandir
- ディレクトリエントリを高速に取得する低レベルAPI。os.walkは内部でこれを利用して走査性能を高めます。
- ディレクトリツリー
- ディレクトリが階層状に連なる木構造のこと。os.walkはこの木を再帰的に巡回します。
- 再帰探索
- ディレクトリツリーを深さ優先で辿る探索手法のこと。os.walkの基本動作の核です。
- ジェネレータ
- yieldで値を順次返す関数のこと。os.walkはジェネレータなのでforループで1つずつ結果を受け取れます。
- 3要素のタプル
- os.walkが返す1回の反復でのデータ構造。dirpath・dirnames・filenamesの3要素を持つタプルです。
- dirpath
- 現在走査中のディレクトリのパス文字列。
- dirnames
- 現在のディレクトリ直下にあるサブディレクトリ名のリスト。
- filenames
- 現在のディレクトリ直下にあるファイル名のリスト。
- topdown
- Trueの場合、親ディレクトリを先に走査します。Falseだと子ディレクトリを先に走査します。
- followlinks
- Trueにするとシンボリックリンクを辿ってリンク先のディレクトリも走査します。
- onerror
- 走査中にエラーが発生したときに呼ばれるエラーハンドラ。エラーの処理方法を指定します。
- symlink
- シンボリックリンクのこと。followlinksの挙動と関係します。
- glob
- ファイル名のパターンマッチでファイルを探す方法。os.walkとは別の検索手段として使われます。
- pathlib.Path.glob
- Pathオブジェクトのglobメソッド。非再帰的にパターンに一致するファイルを検索します。
- pathlib.Path.rglob
- Pathオブジェクトのrglobメソッド。ディレクトリ配下を再帰的に検索します。



















