os.walkとは?初心者向けガイドで学ぶ使い方と仕組み共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
os.walkとは?初心者向けガイドで学ぶ使い方と仕組み共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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 したり 保存したりします。実用的な例として、特定の拡張子を持つファイルだけを列挙する方法を後に示します。

<th>項目
説明
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メソッド。ディレクトリ配下を再帰的に検索します。

インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
16580viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2963viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1197viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1183viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
1054viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
1051viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
1033viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
986viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
875viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
873viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
819viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
817viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
811viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
752viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
728viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
701viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
629viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
616viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
609viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
549viws

新着記事

インターネット・コンピュータの関連記事