Pythonでディレクトリ操作!globとos.walkの使い方と順番を詳解

Pythonを使ってディレクトリ操作を行う場合、osモジュールのos.walkとglobを使うことができます。この記事では、os.walkとglobの基本的な使い方やディレクトリの探索順番について詳しく解説していきます。

Pythonのディレクトリ操作についての基本

Pythonでディレクトリ操作を行う場合、osモジュールを使います。osモジュールには、ファイルやディレクトリを操作するための様々な関数が用意されています。

例えば、osモジュールのos.mkdir()関数を使うと、新しいディレクトリを作成することができます。

import os
os.mkdir("new_directory")

このように、os.mkdir()関数を使うと、引数に指定した名前のディレクトリが作成されます。

os.walkの基本的な使い方

os.walk()関数は、指定したディレクトリ以下のファイルやディレクトリを再帰的に探索するための関数です。os.walk()関数を使うと、指定したディレクトリ以下の全てのファイルやディレクトリを取得することができます。

以下は、os.walk()関数を使って、指定したディレクトリ以下の全てのファイルやディレクトリを取得する例です。

import os
for root, dirs, files in os.walk("path/to/directory"):
    for file in files:
        print(os.path.join(root, file))
    for dir in dirs:
        print(os.path.join(root, dir))

このプログラムでは、os.walk()関数に指定したディレクトリ以下の全てのファイルやディレクトリを取得して、os.path.join()関数を使って、絶対パスを取得しています。

os.walkでのディレクトリの探索順番について

os.walk()関数を使ってディレクトリを探索する場合、ディレクトリの探索順番は、親ディレクトリから子ディレクトリへと探索が進みます。

具体的には、os.walk()関数がディレクトリを探索する順番は、以下のようになります。

  1. 親ディレクトリ
  2. 子ディレクトリ
  3. 子ディレクトリの子ディレクトリ
  4. 子ディレクトリの子ディレクトリの子ディレクトリ

このように、os.walk()関数を使ってディレクトリを探索する場合は、親ディレクトリから子ディレクトリへと探索が進むことに注意してください。

globとの比較:os.walkとglobの違いとは?

os.walk()関数とglobモジュールを使って、ディレクトリの操作を行うことができます。os.walk()関数とglobモジュールの違いについて、以下にまとめます。

os.walk()関数 globモジュール
再帰的にディレクトリを探索することができる 再帰的にディレクトリを探索することができない
ファイルやディレクトリを取得することができる ファイルやディレクトリを取得することができる
ディレクトリの探索順番は、親ディレクトリから子ディレクトリへと探索が進む

os.walk()関数は、再帰的にディレクトリを探索することができるため、ディレクトリ以下の全てのファイルやディレクトリを取得することができます。一方、globモジュールは、再帰的にディレクトリを探索することができないため、指定したパターンに基づいてファイルを取得することができます。

globの基本的な使い方

globモジュールを使うと、指定したパターンにマッチするファイルを取得することができます。以下は、globモジュールを使って、指定したパターンにマッチするファイルを取得する例です。

import glob
files = glob.glob("path/to/directory/*.txt")
for file in files:
    print(file)

このプログラムでは、glob.glob()関数に指定したパターンにマッチするファイルを取得して、ファイル名を表示しています。

os.walkとglobを組み合わせて使う場合の注意点

os.walk()関数とglobモジュールを組み合わせて使う場合は、以下のように使うことができます。

import os
import glob
for root, dirs, files in os.walk("path/to/directory"):
    for file in files:
        if file.endswith(".txt"):
            print(os.path.join(root, file))

このプログラムでは、os.walk()関数によってディレクトリ以下の全てのファイルを取得し、globモジュールのパターンマッチングを使って、拡張子が”.txt”のファイルのみを表示しています。

まとめ

Pythonでディレクトリ操作を行うためのosモジュールのos.walk()関数とglobモジュールについて、基本的な使い方やディレクトリの探索順番について解説しました。os.walk()関数は、再帰的にディレクトリを探索することができるため、ディレクトリ以下の全てのファイルやディレクトリを取得することができます。一方、globモジュールは、再帰的にディレクトリを探索することができないため、指定したパターンに基づいてファイルを取得することができます。os.walk()関数とglobモジュールを組み合わせて使うことで、より柔軟なディレクトリ操作を行うことができます。