こんにちは、ぽころーです!
今回は、ファイル操作をするときに、便利な glob の使い方について紹介します!
globとは
globとはglobモジュールのglob()関数のことを指します。
そのため、globを使用するときは、globモジュールをimport する必要があります。
具体的な使い方はのちほど説明します。
globは、ファイル名を抽出したいときに使用します。
globは英語で「かたまり」という意味があり、
複数のファイル名をまとめて取得することも可能です。
globの使い方
では実際にglobを使ってファイル名を抽出する方法を紹介します。
ディレクトリの準備
まずは、globを使うためにディレクトリを準備します。
以下のディレクトリ構成で、実際に操作したいと思います。
└── testdata
    ├── test_001.csv
    ├── test_002.csv
    ├── test_003.csv
    ├── test_004.csv
    └── test_005.csvtestdataディレクトリにテストデータ001から005のcsvファイルを格納します。
ファイルの中身は何も書かれていなくて問題ないです。
globでファイルを抽出する
準備ができたところで、globでファイル名を抽出してきましょう!
実際のコードは以下の通りです
testdataディレクトリ内のcsvファイルのファイル名を抽出しています
import glob
file_list = glob.glob('testdata/*.csv')
print(file_list)実行結果
['testdata/test_001.csv', 'testdata/test_002.csv', 'testdata/test_003.csv', 'testdata/test_004.csv', 'testdata/test_005.csv']globを使うため、まずはglobモジュールをimportします。
そして、globモジュールのglob()関数を呼び出しています。
glob()関数の引数には、「ファイルの抽出条件」を指定します。
*は「0文字以上の任意の文字列」という意味があり、
今回の例では、
「testdataディレクトリ内のcsvファイルをすべて抽出する」という条件になります
実行結果をみると、
testdataディレクトリ内のcsvファイルがすべてリストで取得できていることがわかります
下の階層までファイル検索をする方法
globには、深い階層(サブディレクトリ)まで検索する方法もあります。
testdataディレクトリの下にtestdata2ディレクトリを用意します。
└── testdata
    ├── test_001.csv
    ├── test_002.csv
    ├── test_003.csv
    ├── test_004.csv
    ├── test_005.csv
    └── testdata2
        ├── test_011.csv
        ├── test_012.csv
        ├── test_013.csv
        ├── test_014.csv
        └── test_015.csv
以下の方法で、globを使ってすべてのcsvファイルを取得します。
file_list = glob.glob('testdata/**/*.csv', recursive=True)
print(file_list)実行結果
['testdata/test_001.csv', 'testdata/test_002.csv', 'testdata/test_003.csv', 'testdata/test_004.csv', 'testdata/test_005.csv', 'testdata/testdata2/test_011.csv', 'testdata/testdata2/test_012.csv', 'testdata/testdata2/test_013.csv', 'testdata/testdata2/test_014.csv', 'testdata/testdata2/test_015.csv']testdata2の中のcsvファイルも取得できました。
引数のパスに**を追加すことで、testdataディレクトリより下の階層まで検索します!
また、第2引数には、recursive=Trueを指定します。
まとめ
globはファイル名を抽出したいときによく使います
ワイルドカードなど覚えないといけないこともありますが、
理解してしまえばとても便利です。
glob以外にもPythonには、他にもファイル操作モジュールがあります。
ぜひ他のモジュールもマスターし、ファイル操作に自信をつけていきましょう!

 
		 
		 
			 
			 
			 
			 
			 
			 
			