
Pythonでファイルやフォルダ(ディレクトリ)を操作する場面はよくあります。
例えばプログラムの実行時に、保存先のフォルダがなければ自動で作りたい、といったケースです。
そんなときに活躍するのが os.makedirs
という関数です。
この記事では os.makedirs
の使い方と、よくセットで使われる exist_ok=True
の意味について、具体例を交えてわかりやすく解説します。
os.makedirsとは
os.makedirs
は、指定したパスにディレクトリ(フォルダ)を作成する関数です。
通常の os.mkdir
との違いは、途中の階層もまとめて作成できることです。
具体例
1 2 3 4 | import os os.makedirs('parent_folder/child_folder/grandchild_folder') |
parent_folder
child_folder
grandchild_folder
という3階層のフォルダが順番に作成されます。
もし parent_folder
や child_folder
がまだ存在していなくても、自動で作ってくれるのがポイントです。
exist_ok=Trueとは
os.makedirs
を使うときによく一緒に出てくるのが exist_ok=True
というオプションです。
これは既にフォルダが存在していた場合にエラーを出さないための指定です。
具体例
1 2 3 4 | import os os.makedirs('parent_folder/child_folder', exist_ok=True) |
1回目の実行ではフォルダが作成されます。
2回目の実行では既にフォルダがある状態ですが、エラーが出ずスルーされます。
exist_ok=Falseの場合
逆に exist_ok=False
(デフォルトの設定)だと、既にフォルダがある場合にエラーが発生します。
例
1 2 3 4 | import os os.makedirs('parent_folder/child_folder', exist_ok=False) |
parent_folder/child_folder
が既に存在していたら、FileExistsError
が発生します。これを防ぐために、通常は exist_ok=True
を付けて使うことが多いです。
よくある使い方パターン
ログ保存用のフォルダを作成する
1 2 3 4 5 6 7 | import os log_dir = 'logs/2025-06-12' os.makedirs(log_dir, exist_ok=True) # この後、log_dir にログファイルを保存する処理を書く |
一時フォルダを作成する
1 2 3 4 5 6 7 | import os temp_dir = 'temp/files' os.makedirs(temp_dir, exist_ok=True) # 一時ファイルをここに保存する |
よくある疑問
os.makedirsとos.mkdirの違いは?
os.mkdir
は1階層のフォルダしか作れない。os.makedirs
は途中のフォルダもまとめて作れる。
exist_ok=Trueは必ず必要?
必須ではありません。
しかし、既にフォルダがあるかどうかを毎回確認するのは面倒なので、エラー防止のために付けておくのがおすすめです。
フォルダのパスに日本語は使える?
日本語を使うことも可能です。
1 2 3 4 | import os os.makedirs('データ/今日の結果', exist_ok=True) |
このように日本語のフォルダ名も問題ありません(ただしOSによっては注意が必要な場合もあります)。
まとめ
os.makedirs
は複数階層のフォルダをまとめて作れる関数。exist_ok=True
を付けると、既存フォルダがあってもエラーにならない。- フォルダを自動生成する場面ではとても便利。
- Pythonでファイル操作をする際にはぜひ覚えておきたい基本の関数です。
特にログ保存や一時フォルダ作成のコードには定番なので、積極的に活用してみてください。