こんにちは。
本日はPythonメモです。
概要
globモジュールを使用してパスの一覧を取得します。
globモジュールは指定されたパターンに一致する
すべてのパス名を取得してくれます。
フォルダの構成は以下とします。
─ tmp1 ├── 1.txt ├── 123.txt ├── aaa.txt ├── bbb.txt └── tmp2 ├── 2.txt ├── ccc.txt └── ddd.txt
指定したパス一覧を取得
import glob files = glob.glob('./tmp1/*.txt') print(files)
実行結果は以下です。
['./tmp1/bbb.txt', './tmp1/aaa.txt', './tmp1/1.txt', './tmp1/123.txt']
tmp1配下のファイルのパス一覧が取得できました。
少し条件を変えて取得してみます。
次は、数値1文字のファイル名のパスを取得します。
import glob files = glob.glob('./tmp1/[0-9].txt') print(files)
実行結果は以下です。
['./tmp1/1.txt']
指定したパス一覧を取得(再帰的に取得)
import glob files = glob.glob('./tmp1/**/*.txt', recursive=True) print(files)
実行結果は以下です。
['./tmp1/bbb.txt', './tmp1/aaa.txt', './tmp1/1.txt', './tmp1/123.txt', './tmp1/tmp2/2.txt', './tmp1/tmp2/ddd.txt', './tmp1/tmp2/ccc.txt']
先程と違って、今回はtmp2配下のファイルパスも取得できました。
これは、globの引数でrecursive=True
を指定しているためです。
先程と同様に、数値1文字のファイル名のパスを取得します。
import glob files = glob.glob('./tmp1/**/[0-9].txt', recursive=True) print(files)
実行結果は以下です。
['./tmp1/1.txt', './tmp1/tmp2/2.txt']
以上です。