ディレクトリに含まれるファイルとディレクトリの一覧を取得する(pathlibモジュール)

広告

Python の pathlib モジュールで用意されている Path.iterdir メソッド使って指定したディレクトリに含まれるファイルとディレクトリ名の一覧を取得する方法について解説します。あわせて Path.is_file メソッドと Path.is_dir メソッドを使ってファイルかディレクトリかを判別する方法についても解説します。

※ os モジュールを使ってファイルとディレクトリの一覧を取得するには「ディレクトリに含まれるファイルとディレクトリの一覧を取得する」を参照されてください。

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

指定したディレクトリに含まれるファイルとディレクトリの一覧を取得するには、 pathlib モジュールで用意されている Path クラスの iterdir メソッドを使用します。書式は次の通りです。

Path.iterdir()

パスが示すディレクトリに含まれるファイルやディレクトリを表す Path オブジェクトのイテレータを返します。

例えば次のように記述します。

import pathlib

p = pathlib.Path('./test/')

itr = p.iterdir()
childp = next(itr)

print(childp)
--> address.txt

イテレータから要素を一つ取り出してパスを出力しました。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample6-1.py という名前で保存します。

import pathlib

p = pathlib.Path('./test/')
for i in p.iterdir():
  print(i)

プログラムと同じディレクトリの中に test という名前のディレクトリがあり、 test ディレクトリの中に次のようにファイルとディレクトリが含まれています。

ファイルとディレクトリの一覧を取得する(1)

その後で、次のように実行してください。

python sample6-1.py

ファイルとディレクトリの一覧を取得する(2)

指定したパスに含まれるファイル名またはディレクトリ名と、それぞれのパスを取得して画面に出力しました。

ファイルかディレクトリなのかを調べる

指定したパスがファイルかディレクトリなのかを調べるには pathlib モジュールで用意されている Path クラスの is_file メソッドおよび is_dir メソッドを使用します。書式は次の通りです。

Path.is_file()

引数に指定したパスが実際に存在し、且つファイルだった場合に True を返します。

Path.is_dir()

引数に指定したパスが実際に存在し、且つディレクトリだった場合に True を返します。

どちらのメソッドも実際に存在しなかった場合には False を返します。

例えば次のように記述します。

import pathlib

p = pathlib.Path('./test/')
for i in p.iterdir():
  if i.is_file():
    print(str(i) + ' is File')
  else:
    print(str(i) + ' is Directory')

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample6-2.py という名前で保存します。

import pathlib

p = pathlib.Path('./test/')
for i in p.iterdir():
  if i.is_file():
    print('[F]:' + str(i))
  else:
    print('[D]:' + str(i))

プログラムと同じディレクトリの中に test という名前のディレクトリがあり、 test ディレクトリの中に次のようにファイルとディレクトリが含まれています。

指定のパスがファイルかディレクトリなのかを判別する(1)

その後で、次のように実行してください。

python sample6-2.py

指定のパスがファイルかディレクトリなのかを判別する(2)

指定したパスに含まれるファイルまたはディレクトリに対して、ファイルなのかディレクトリなのかを調べて表示しました。

-- --

Python の pathlib モジュールを使って指定したディレクトリに含まれるファイルとディレクトリ名の一覧を取得する方法について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。