【Python基礎】globでファイル名を抽出しよう!

  • URLをコピーしました!

こんにちは、ぽころーです!

今回は、ファイル操作をするときに、便利な 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.csv

testdataディレクトリにテストデータ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には、他にもファイル操作モジュールがあります。

ぜひ他のモジュールもマスターし、ファイル操作に自信をつけていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次