【Python】os.makedirsって何?exist_ok=Trueの意味と合わせてわかりやすく解説!

Pythonでファイルやフォルダ(ディレクトリ)を操作する場面はよくあります。

例えばプログラムの実行時に、保存先のフォルダがなければ自動で作りたい、といったケースです。

そんなときに活躍するのが os.makedirs という関数です。

この記事では os.makedirs の使い方と、よくセットで使われる exist_ok=True の意味について、具体例を交えてわかりやすく解説します。

os.makedirsとは

os.makedirs は、指定したパスにディレクトリ(フォルダ)を作成する関数です。

通常の os.mkdir との違いは、途中の階層もまとめて作成できることです。

具体例

このコードでは、

  • parent_folder
  • child_folder
  • grandchild_folder

という3階層のフォルダが順番に作成されます。

もし parent_folderchild_folder がまだ存在していなくても、自動で作ってくれるのがポイントです。

exist_ok=Trueとは

os.makedirs を使うときによく一緒に出てくるのが exist_ok=True というオプションです。

これは既にフォルダが存在していた場合にエラーを出さないための指定です。

具体例

このコードを2回実行してみてください。

1回目の実行ではフォルダが作成されます。

2回目の実行では既にフォルダがある状態ですが、エラーが出ずスルーされます

exist_ok=Falseの場合

逆に exist_ok=False (デフォルトの設定)だと、既にフォルダがある場合にエラーが発生します。

もし parent_folder/child_folder が既に存在していたら、FileExistsError が発生します。

これを防ぐために、通常は exist_ok=True を付けて使うことが多いです。

よくある使い方パターン

ログ保存用のフォルダを作成する

このようにしておけば、プログラムを再実行したときでも問題なくログフォルダを使い回せます。

一時フォルダを作成する

よくある疑問

os.makedirsとos.mkdirの違いは?

  • os.mkdir1階層のフォルダしか作れない
  • os.makedirs途中のフォルダもまとめて作れる

exist_ok=Trueは必ず必要?

必須ではありません。

しかし、既にフォルダがあるかどうかを毎回確認するのは面倒なので、エラー防止のために付けておくのがおすすめです。

フォルダのパスに日本語は使える?

日本語を使うことも可能です。

このように日本語のフォルダ名も問題ありません(ただしOSによっては注意が必要な場合もあります)。

まとめ

  • os.makedirs複数階層のフォルダをまとめて作れる関数
  • exist_ok=True を付けると、既存フォルダがあってもエラーにならない
  • フォルダを自動生成する場面ではとても便利。
  • Pythonでファイル操作をする際にはぜひ覚えておきたい基本の関数です。

特にログ保存や一時フォルダ作成のコードには定番なので、積極的に活用してみてください。

おすすめの記事