拙著『VBAユーザーのためのPython超入門』の、[9-4. ファイルの情報を再帰的に取得する]で、Python標準のglobモジュールを使った以下のようなコードについて解説しています。
import glob
for path in glob.glob(r'C:\temp\**', recursive=True):
print(path)
上記のスクリプトを実行すると、Cドライブtempフォルダー下の全ファイルのフルパスを取得・出力できます。
同様の処理は、別のモジュールを使っても書けます。
pathlib.Path.glob()を使ってファイルのフルパス一覧を再帰的に取得するサンプル
globモジュールではなく、pathlibモジュールを使った以下のようなスクリプトでも、Cドライブtempフォルダー下の全ファイルのフルパスを取得・出力できます。
for path in pathlib.Path(r'C:\temp').glob('**/*'):
print(path)
ただし、出力される順序がglobモジュールを使った場合とは異なります。
また、pathlibモジュールを使った場合には「C:\temp」は出力されません。
pathlibモジュールではなくglobモジュールを採用した理由
執筆時点で、どちらを採用するか迷ったのですが、『VBAユーザーのためのPython超入門』の基本コンセプトから、pathlibモジュールよりglobモジュールを使うコードのほうが相応しいと考えました。
『VBAユーザーのためのPython超入門』では、AnacondaではなくPythonの公式サイトからインストールして、開発環境もPythonに付属するIDLEを使って解説しています。
pathlibモジュールのほうがglobモジュールより高機能であることは、よりシンプルなほうを採用するという『VBAユーザーのためのPython超入門』の基本コンセプトに反すると感じ、globモジュールを使ったサンプルで解説を行いました。
また、「再帰的な」といった意味を持つ英単語「recursive」が引数名として使われているのも、拙著の対象読者のレベル感から適切に思えたというのもあります。
久しぶりに拙著を読み直していて、3年ほど前になぜglobモジュールを使った例にしたのか著者である自分自身も理由を忘れつつあったので、あらためて書き記しておきます。
- 『VBAユーザーのためのPython超入門』出ました。
- IDLEを使わないPython入門書が何故多いのか
- 『VBAユーザーのためのPython超入門』に登場するVBA関数一覧
- 『VBAユーザーのためのPython超入門』に登場するPythonの関数・メソッド一覧
最終更新日時:2023-08-29 12:57
Home » 電子書籍 » VBAユーザーのためのPython超入門 » globモジュールではなくpathlibでもファイルのフルパスを再帰的に取得できる