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()関数がディレクトリを探索する順番は、以下のようになります。
- 親ディレクトリ
- 子ディレクトリ
- 子ディレクトリの子ディレクトリ
- 子ディレクトリの子ディレクトリの子ディレクトリ
- …
このように、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モジュールを組み合わせて使うことで、より柔軟なディレクトリ操作を行うことができます。