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

ファイル・ディレクトリの一覧を取得: os.listdir()

ファイル・ディレクトリの一覧を取得するには os.listdir() 関数を使用します。

import os

print(os.listdir("./dir"))
# ['dir1', 'dir2', 'file1.txt', 'file2.txt']
ファイル・ディレクトリの一覧を取得: os.listdir()

ファイル名の一覧を取得: os.path.isfile()

ファイル名の一覧を取得するには os.path.isfile() 関数を使用して、ファイルかどうかを判定します。

import os

path = "./dir"
files = os.listdir(path)
file = [f for f in files if os.path.isfile(os.path.join(path, f))]

print(file)
# ['file1.txt', 'file2.txt']
ファイル名の一覧を取得: os.path.isfile()

ディレクトリ名の一覧を取得: os.path.isdir()

ディレクトリ名の一覧を取得するには os.path.isdir() 関数を使用して、ディレクトリかどうかを判定します。

import os

path = "./dir"
files = os.listdir(path)
dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(dir)
# ['dir1', 'dir2']
ディレクトリ名の一覧を取得: os.path.isdir()

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

ファイル・ディレクトリの一覧を取得するには glob() 関数を使用します。絶対パスを指定した場合は絶対パスのリストが返り、相対パスを指定した場合は相対パスのリストが返ります。

import glob

print(glob.glob("/dir/*")) # 絶対パス
# ['/dir\\dir1', '/dir\\file1.txt']

print(glob.glob("./*")) # 相対パス
# ['.\\dir1', '.\\file1.txt'] 
ファイル・ディレクトリの一覧を取得: glob()

glob() 関数では、条件指定としてワイルドカード *, ?, [] を指定できます。

  • *: 任意の文字列とマッチする
  • ?: 任意の1文字とマッチする
  • []: 範囲に含まれる文字にマッチする。例えば [0-9] では任意の数字1文字とマッチする

ファイル・ディレクトリの一覧を再帰的に取得: glob()

ファイル・ディレクトリの一覧を再起的に取得するには glob() 関数の引数に recursive=True を指定し、再帰的に取得したいパスに ** を使用します。

import glob

print(glob.glob("/dir/**", recursive=True))
# ['/dir\\dir1', '/dir\\dir2', '/dir\\dir1\\file1.txt', '/dir\\dir2\\file2']
ファイル・ディレクトリの一覧を再帰的に取得: glob()

関連記事