見出し画像

【Python3】フォルダの中のフォルダの中のファイルをごそっと取得

親フォルダのパスを与えると、子フォルダの中のファイルも含めて、指定の拡張子のファイルをごっそり取得します。

parent
    └ 001.pdf
    └ 002.jpgfolder_aa-001.pdfa-002.jpgfolder_bb-001.jpgb-002.pdffolder_cc-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")

という具合です。 ​


この記事が気に入ったらサポートをしてみませんか?