【Python3】フォルダの中のフォルダの中のファイルをごそっと取得
親フォルダのパスを与えると、子フォルダの中のファイルも含めて、指定の拡張子のファイルをごっそり取得します。
parent
└ 001.pdf
└ 002.jpg
└ folder_a
└ a-001.pdf
└ a-002.jpg
└ folder_b
└ b-001.jpg
└ b-002.pdf
└ folder_c
└ c-001.pdf
こんなフォルダ構成になっている時に、「parentの中のpdfを全部取得しておくれ」というプログラムを作ります。
パターン1:子フォルダの中も全部探して、指定の拡張子のファイルを取得する
001.pdf
a-001.pdf
b-002.pdf
c-001.pdf
この4つ全部を取得したい、と言うときは、こう。
import pathlib
path = pathlib.Path("/parent")
pdf_path_list = path.glob("**/*.pdf")
path.glob()の引数に、** を指定すると、「フォルダの中のフォルダも掘れ」という命令になります。専門用語で再帰ってやつです。
パターン2:指定の階層のフォルダだけ探したい時
parentフォルダ内に入っている子フォルダの中だけを探したくて、parentフォルダに直接保存されているファイルや、孫フォルダの中は探したくないという時もあると思います。
つまり
a-001.pdf
b-002.pdf
だけ欲しい、と言うときはこちら。
import pathlib
path = pathlib.Path("/parent")
pdf_path_list = path.glob("*/*.pdf")
globの引数を * ひとつにすれば、再帰しなくなり、「parentフォルダの中で、何かのフォルダの中に入ってる、pdf」を取得する命令になります。
親フォルダだけなら
pdf_path_list = path.glob("*.pdf")
孫フォルダだけ探したければ
pdf_path_list = path.glob("*/*/*.pdf")
という具合です。
この記事が気に入ったらサポートをしてみませんか?