【Python】ディレクトリ内のファイル名を取得する方法

こんにちは、のっくんです。

あるディレクトリがありその配下に入っているファイル名全てを取得したい。

そういう時のコードを書いてみました。

ファイル名のみを取得する場合

import os
from os import walk

mypath = "./leapGestRecog"
f = []
for (dirpath, dirnames, filenames) in walk(mypath):
    f.extend(filenames)

リストfの中は以下のようになる。

['frame_00_01_0039.png',
 'frame_00_01_0122.png',
 'frame_00_01_0111.png',
 'frame_00_01_0131.png',
 'frame_00_01_0189.png']

パス名+ファイル名を取得したい場合

中には、いやいやパス名も欲しいという場合もあると思う。

画像ファイルを読みたい場合には、パス名もセットでないと読み取れない。

そういう時は以下のようにすると良い。

mypath = "./leapGestRecog"
f = []
for (dirpath, dirnames, filenames) in walk(mypath):
    f.extend(os.path.join(dirpath, filename) for filename in filenames)

リスト内包表記を使って得られたファイル名にパス名を`os.path.join`でくっつけている。

リスト`f`の中身は以下の通り。

['./leapGestRecog/00/01_palm/frame_00_01_0039.png',
 './leapGestRecog/00/01_palm/frame_00_01_0122.png',
 './leapGestRecog/00/01_palm/frame_00_01_0111.png',
 './leapGestRecog/00/01_palm/frame_00_01_0131.png',
 './leapGestRecog/00/01_palm/frame_00_01_0189.png']