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

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

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

import os

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

ファイル名の一覧を取得する

ファイル名の一覧を取得するには、os.listdir() 関数で取得した結果から、ファイルのみ取得します。ファイルのみ取得するには、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.isdir()

ディレクトリ名の一覧を取得するには、os.listdir() 関数で取得した結果から、ディレクトリのみ取得します。ディレクトリのみ取得するには、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']
ディレクトリ名の一覧を取得する

ファイル・ディレクトリの一覧を取得する: 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()