職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

条件に一致するファイルやディレクトリの一覧取得

2021年03月15日 | Python
条件に一致するファイルやディレクトリの一覧を取得する(pathlibモジュール)


【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【条件に一致するファイルやディレクトリを取得する】
指定した条件に一致するファイルやディレクトリの一覧を取得するには pathlib モジュールで用意されているPath.glob メソッドを使用する

・書式
Path.glob(pattern)
パスが示すディレクトリおよびそのサブディレクトリに含まれるファイルやディレクトリの中で、 1 番目の引数に指定したパターンとマッチするファイルやディレクトリへ順番にアクセスできるイテレータを取得します

・パターン
* 0文字以上の任意の文字
? 1文字の任意の文字
[abc] 括弧の中のいずれかの文字

【*:0文字以上の任意の文字】
* は 0 文字以上の任意の文字とマッチ

例文
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>
下記は b から始まるファイルおよびディレクトリの一覧
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('b*'):
print(name)


D:\Data\back
D:\Data\book.txt
>>>

【?:1文字の任意の文字】
? は 1 文字以上の任意の文字とマッチします。
例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('???.txt'):
print(name)


D:\Data\cup.txt
>>>
※ 3 文字の任意の文字で始まり .txt で終わるファイルおよびディレクトリの一覧を取得してみた。

【[abc]:括弧の中のいずれかの文字】
[] は括弧の中に記述した文字のいずれか 1 文字とマッチするファイルの一覧
例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('[a-e]*.txt'):
print(name)


D:\Data\book.txt
D:\Data\cup.txt
>>>

【サブディレクトリの含めてマッチするファイルやディレクトリを取得する】
パターンの中で ** を使用すると、0 個以上のディレクトリとサブディレクトリにマッチするようになります。

・例文
>>> import pathlib
>>> p = pathlib.Path('D:/Data')
>>> for name in p.glob('**/*.txt'):
print(name)


D:\Data\0314.txt
D:\Data\book.txt
D:\Data\cup.txt
D:\Data\test1.txt
>>>
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする