Home » 電子書籍 » VBAユーザーのためのPython超入門 » globモジュールではなくpathlibでもファイルのフルパスを再帰的に取得できる

globモジュールではなくpathlibでもファイルのフルパスを再帰的に取得できる

動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.11.1(64-bit)

拙著『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フォルダー下の全ファイルのフルパスを取得・出力できます。

import pathlib

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モジュールを使った例にしたのか著者である自分自身も理由を忘れつつあったので、あらためて書き記しておきます。

最終更新日時:2023-08-29 12:57

[スポンサードリンク]

Home » 電子書籍 » VBAユーザーのためのPython超入門 » globモジュールではなくpathlibでもファイルのフルパスを再帰的に取得できる

「VBAユーザーのためのPython超入門」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.