【python入門】os.listdirでファイル・ディレクトリの一覧を取得

よくファイルやディレクトリを操作するときに、以下のようなことが知りたい場合もあります。

指定したディレクトリの中身を一覧で取得したい
特定の拡張子のファイルを取得したい

そこで、この記事ではファイルの一覧を取得できるos.listdir関数の使い方や、指定した拡張子のファイルを取得する方法などについて解説していきます。

  • 【基礎】osモジュールとは
  • 【基礎】listdir関数でファイル・ディレクトリの一覧を取得する方法
  • 【基礎】listdir関数でファイルのみ一覧を取得する方法
  • 【基礎】listdir関数でディレクトリのみ一覧を取得する方法
  • 【発展】拡張子を指定して一覧を取得する方法

ファイル操作を行う上で、このような機能はよく使いますので使い方についてはしっかりと理解しておきましょう。

osモジュールとは

osモジュールはOSに依存しているさまざまな機能を利用できるモジュールで、主にファイルやパスの操作が可能です。osモジュールを使用する場合は、Pythonのプログラムの先頭でosモジュールをインポートする必要があります。

import os

ここではそんなosモジュールで、ファイルやディレクトリの一覧を取得できるlistdir関数について解説していきます。

os.listdirの使い方

ファイル・ディレクトリの一覧を取得

指定したファイル・ディレクトリの一覧を確認するためには、listdir関数の引数に取得したいディレクトリのパスを指定します。ここでは以下のようなディレクトリ構造の一覧を取得します。

└── dir
    ├── sample1.txt
    ├── sample2.txt
    ├── sample3.txt
    ├── subdir1
    └── subdir2

サンプルプログラム:

import os

path = './dir'

list1 = os.listdir(path)
print(list1)

実行結果:

['subdir2', 'Untitled.ipynb', 'test2.csv', 'subdir1', 'test1.csv', '.ipynb_checkpoints', 'sample1.txt', 'sample2.txt', 'sample3.txt']

このようにリストに指定したディレクトリのファイル・ディレクトリの一覧を取得することができました!

ファイルのみの一覧を取得

listdir関数を使用すると、ファイル・ディレクトリの一覧が取得できて便利ですが、場合によってはファイルのみ、ディレクトリのみの一覧を取得したい場合もあります。

たとえば取得したリストからファイルのみを抽出したい場合は、path.isfile関数を使用してファイルかどうか判定する必要があります。

以下のサンプルを御覧ください。サンプルプログラム:

import os
 
path = './dir'

filelist = []

for f in os.listdir(path):
  if os.path.isfile(os.path.join(path, f)):
    filelist.append(f)

print(filelist)

実行結果:

['test2.csv', 'test1.csv', 'sample1.txt', 'sample2.txt', 'sample3.txt']

このようにファイルのみ取得することができました!このプログラムではfor文でlistdirで取得したパスを、それぞれファイルかどうか判定し、ファイルだったらリストfilelistに格納しています。

ディレクトリのみ取得する

listdir関数でディレクトリのみ取得したい場合は、ファイルのみ取得した場合と同じようにpath.isfileの箇所をディレクトリかどうか判定するpath.isdir関数に置き換えます。

サンプルプログラム:

import os
 
path = './dir'

filelist = []

for f in os.listdir(path):
  if os.path.isdir(os.path.join(path, f)):
    filelist.append(f)

print(filelist)

実行結果:

['subdir2', 'subdir1']

このようにディレクトリのみ取得することができました!

拡張子を指定して取得したい場合

ファイルを取得時に、たとえば拡張子が.txtのファイルのみ取得したいなんて場合もありえます。そんなときはglobモジュールのglob関数を使用すると便利です。

globモジュールはファイルやディレクトリを操作するときに、正規表現やワイルドカードによるパターンマッチングが可能です。以下では拡張子が.txtのファイルを取得しています。

サンプルプログラム:

import glob

path = './dir/*.txt'

list1 = glob.glob(path);

print(list1)

実行結果:

['./dir/sample1.txt', './dir/sample2.txt', './dir/sample3.txt']

globについては、以下の記事でも詳しく解説しています。

まとめ

ここでは、ファイル・ディレクトリの一覧を取得するlistdirや拡張子を指定してファイルの一覧を取得するglobについて解説しました。

  • osモジュールとは
  • listdir関数でファイル・ディレクトリの一覧を取得する方法
  • listdir関数でファイルのみ一覧を取得する方法
  • listdir関数でディレクトリのみ一覧を取得する方法
  • 拡張子を指定して一覧を取得する方法

Pythonではファイル操作の関数はよく使われますので、使い方についてはしっかりと理解しておきましょう。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説