Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
os.listdir() / os.makedirs() / os.remove()
ディレクトリの一覧取得・作成・ファイル削除・名前変更などを行う『os』モジュールの関数です。スクリプトからファイルシステムを操作するときに使います。
構文
import os # ディレクトリ内のファイル・ディレクトリ名をリストで返します。 os.listdir(パス) # ディレクトリを再帰的に作成します。 os.makedirs(パス, exist_ok=True) # ディレクトリを1階層作成します(親が存在しない場合はエラー)。 os.mkdir(パス) # ファイルを削除します。 os.remove(パス) # ファイルまたはディレクトリの名前を変更・移動します。 os.rename(旧パス, 新パス) # 現在の作業ディレクトリを取得します。 os.getcwd() # 作業ディレクトリを変更します。 os.chdir(パス)
関数一覧
| 関数 | 概要 |
|---|---|
| os.listdir(パス) | 指定したディレクトリ内のエントリ名(ファイル・サブディレクトリ)をリストで返します。順序は不定で、『.』と『..』は含まれません。 |
| os.makedirs(パス, exist_ok=False) | 指定したパスのディレクトリを再帰的に作成します。『exist_ok=True』を指定すると既存の場合でもエラーになりません。 |
| os.mkdir(パス) | ディレクトリを1階層作成します。親ディレクトリが存在しない場合は『FileNotFoundError』が発生します。 |
| os.remove(パス) | ファイルを削除します。ディレクトリには使えません。存在しない場合は『FileNotFoundError』が発生します。 |
| os.rename(旧パス, 新パス) | ファイルまたはディレクトリの名前を変更、または移動します。 |
| os.getcwd() | 現在の作業ディレクトリの絶対パスを文字列で返します。 |
| os.chdir(パス) | 現在の作業ディレクトリを変更します。 |
| os.rmdir(パス) | 空のディレクトリを削除します。空でない場合は『OSError』が発生します。 |
サンプルコード
import os
# listdir() でディレクトリの内容を取得します。
entries = os.listdir('.') # カレントディレクトリの一覧を取得します。
print(entries) # ファイル名・ディレクトリ名のリストが出力されます。
# ファイルだけをフィルタリングします。
files = [f for f in os.listdir('.') if os.path.isfile(f)]
print(files)
# makedirs() でネストしたディレクトリを一括作成します。
os.makedirs('output/reports/2025', exist_ok=True)
print('ディレクトリを作成しました。')
# mkdir() は親ディレクトリが存在する場合のみ使えます。
try:
os.mkdir('new_folder')
print('フォルダを作成しました。')
except FileExistsError:
print('すでに存在します。')
# getcwd() でカレントディレクトリを確認します。
current = os.getcwd()
print(f'現在のディレクトリ: {current}')
# ファイルを削除します。
with open('temp.txt', 'w') as f:
f.write('一時ファイル')
if os.path.exists('temp.txt'):
os.remove('temp.txt')
print('ファイルを削除しました。')
# rename() でファイル名を変更します。
with open('old_name.txt', 'w') as f:
f.write('内容')
os.rename('old_name.txt', 'new_name.txt')
print('ファイル名を変更しました。')
# os.walk() でディレクトリを再帰的に走査します。
for dirpath, dirnames, filenames in os.walk('.'):
for filename in filenames:
full_path = os.path.join(dirpath, filename)
print(full_path)
概要
『os.listdir()』は指定したディレクトリ直下のエントリ名だけを返します。サブディレクトリの中身は含まれません。ディレクトリを再帰的に走査したい場合は『os.walk()』を使うと便利です。
『os.makedirs()』では『exist_ok=True』を指定することで、ディレクトリが既に存在してもエラーが発生しません。スクリプトの冪等性(何度実行しても同じ結果になる性質)を保つために積極的に使うとよいでしょう。
『os.remove()』で削除したファイルはゴミ箱に入らず完全に削除されます。削除前に確認を入れるか、重要なファイルはバックアップしてから操作してください。
パスの操作は『os.path.join() / os.path.exists() / os.path.basename()』を参照してください。モダンなパス操作は『pathlib.Path()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。