【2026年9月最新】Pythonのos.mkdirでフォルダを自動作成する方法|os.makedirsとの違い・エラー対処・業務自動化への活用まで
「Pythonでフォルダを作りたいけど、os.mkdirとos.makedirsって何が違うの?」「exist_okって何のオプション?」「そもそもエラーが出て止まる…」——この記事にたどり着いたあなたは、業務の中でPythonスクリプトを書いていて、ディレクトリ(フォルダ)作成でつまずいた経験があるはずです。
Pythonの標準ライブラリには、フォルダを作成するための関数が複数用意されています。代表的なものがos.mkdirとos.makedirs、そしてより新しい書き方であるpathlib.Path.mkdir()です。似たような名前でも挙動は大きく異なり、使い分けを誤ると「二重にフォルダを作ろうとしてエラーで処理が止まる」「深い階層のフォルダが作れない」といったトラブルにつながります。
この記事では、2026年時点の最新のPython構文をベースに、os.mkdir・os.makedirs・pathlibの違いを実務目線で整理します。さらに、弊社(株式会社GENAI)がClaude Codeを使って日々のフォルダ管理・ファイル整理をどう自動化しているかという実データもあわせて紹介し、「コードを書かずに同じことを実現する方法」まで踏み込んで解説します。
この記事を最後まで読むと、次の7つが明確になります。
01 BASICS os.mkdirとは?基本の文法とできること Pythonの標準ライブラリosモジュールに含まれるフォルダ作成関数
os.mkdirは、Pythonの標準ライブラリであるosモジュールに含まれる関数で、指定したパスに1階層分のディレクトリ(フォルダ)を新規作成します。追加のインストールは不要で、Pythonをインストールした時点で最初から使える標準機能です。
📚 用語解説
osモジュール:Pythonに標準で組み込まれている、OS(オペレーティングシステム)とやり取りするための機能をまとめたライブラリ。ファイルやフォルダの作成・削除・パスの操作など、パソコンのファイルシステムを操作する処理はほぼこのosモジュール(または後述のpathlib)で行います。使うには先頭で import os と書くだけです。
業務システムの例えで言うと、os.mkdirは「新しい書類棚を1段だけ作る」機能です。棚がすでにある場所に新しい書類棚を作ろうとするとエラーになりますし、棚を置く土台となる部屋(親フォルダ)が存在しない場所には棚を作れません。この「1段しか作れない」という制約が、次章で紹介するos.makedirsとの決定的な違いになります。
1-1. 基本構文
import os
os.mkdir("reports") # カレントディレクトリに reports フォルダを作成
たったこれだけで、スクリプトを実行した場所(カレントディレクトリ)にreportsという名前のフォルダが1つ作成されます。パラメータには文字列でフォルダ名(またはパス)を渡すだけのシンプルな設計です。
1-2. os.mkdirが向いているケース・向いていないケース
os.mkdirを使うかどうか迷ったら、「作りたいフォルダの1つ上の階層(親フォルダ)が、実行時点で必ず存在しているか」を自問してください。存在が保証できないなら、次章のos.makedirsを使うのが安全です。
02 HOW TO USE os.mkdirの使い方(基本・複数作成・権限指定) 実務で使う3パターンのコード例
ここからは実際のコード例を交えて、os.mkdirの具体的な使い方を見ていきます。
2-1. 基本的な使い方
import os
# フォルダが存在しない前提で新規作成
os.mkdir("output")
print("outputフォルダを作成しました")
このコードを実行すると、カレントディレクトリにoutputフォルダが作成されます。すでにoutputという名前のフォルダやファイルが存在する場合は、FileExistsErrorという例外が発生してプログラムが止まります(詳しくは第5章で解説します)。
2-2. 複数のフォルダをまとめて作成する(ループ処理)
業務では「案件ごとにフォルダを分けたい」「部署名ごとにフォルダを用意したい」といったニーズがよくあります。この場合はPythonのループ処理(for文)と組み合わせます。
import os
folder_names = ["営業部", "経理部", "総務部", "開発部"]
for name in folder_names:
os.mkdir(name)
print(f"{name}フォルダを作成しました")
リスト(folder_names)に部署名を並べておき、for文で1件ずつos.mkdirに渡していくシンプルな構造です。ただし、このコードは途中で1つでもエラーが起きると処理全体が止まる点に注意が必要です。例えば「経理部」フォルダが既に存在していた場合、その時点でFileExistsErrorが発生し、「総務部」「開発部」は作成されません。
複数フォルダを一括作成する処理は、途中で1つでも失敗すると残りが実行されずに止まります。業務で使う場合は、後述するtry-exceptによるエラーハンドリング、またはexist_ok(第3章)を併用して、失敗しても処理を継続できる設計にすることを推奨します。
2-3. mode引数でアクセス権限を指定する
os.mkdirには、第2引数としてmode(アクセス権限)を指定するオプションがあります。
import os
# 8進数でパーミッション(アクセス権限)を指定
os.mkdir("secure_folder", mode=0o755)
📚 用語解説
パーミッション(アクセス権限):Linux/Mac系OSにおいて、ファイルやフォルダに対して「誰が読み書き・実行できるか」を制御する仕組み。0o755のような8進数の数値で「所有者は読み書き実行OK、他ユーザーは読み取りと実行のみOK」といった設定を表します。Windowsではこの引数はほぼ無視される点に注意してください。
業務システムで機密情報を扱うフォルダを作る場合など、アクセス権限を厳密に管理したいケースで使う引数です。ただし、Windows環境ではmode引数の効果が限定的であり、Linuxサーバー上で動くバッチ処理などでの利用が中心になります。
03 RECURSIVE CREATE os.makedirsの使い方(再帰作成・exist_ok) 深い階層のフォルダを一括作成する方法
os.makedirsは、os.mkdirの上位互換にあたる関数です。最大の違いは、親フォルダが存在しなくても、必要な階層をすべて自動で作成してくれる点にあります。
📚 用語解説
再帰的(さいきてき):ある処理を、自分自身や似た構造に対して繰り返し適用すること。os.makedirsの場合、「まず一番上の階層のフォルダがあるか確認し、なければ作る。次にその中の階層を確認し、なければ作る」という処理を、目的のフォルダに到達するまで繰り返します。この繰り返し処理のことを「再帰的に処理する」と表現します。
3-1. 再帰的にディレクトリを作成する
import os
# report フォルダも 2026 フォルダも 09 フォルダも、
# すべて存在しなくても一括で作成される
os.makedirs("report/2026/09")
このコードを実行すると、reportフォルダが存在しない場合はまずそれを作り、続けてreport/2026、最後にreport/2026/09と、必要な階層をすべて自動で作成してくれます。os.mkdirでこれを実現しようとすると、3回に分けてos.mkdirを呼び出す必要がありますが、os.makedirsなら1行で済みます。
3-2. exist_okでエラーを回避する
業務で最も頻繁に使うことになるのが、exist_okという引数です。
import os
# すでにフォルダが存在してもエラーにならない
os.makedirs("report/2026/09", exist_ok=True)
📚 用語解説
exist_ok:os.makedirsに渡せる引数の一つ。デフォルト(False)では、作成しようとしたフォルダが既に存在する場合にFileExistsErrorが発生します。exist_ok=Trueを指定すると、既に存在していてもエラーにならず、何事もなかったかのように処理が続行されます。「フォルダがあればそのまま使い、なければ作る」という、業務で最も使う頻度の高い挙動です。
日次バッチ処理や定期実行スクリプトでは、「同じフォルダ作成処理を毎日実行する」ケースが非常に多くあります。exist_ok=Trueを付けないと、2日目以降は必ずFileExistsErrorで処理が止まってしまうため、繰り返し実行するスクリプトでは実質必須のオプションと言えます。
業務用スクリプトでフォルダ作成処理を書く場合、基本的には os.makedirs(path, exist_ok=True) の形で書いておけば、階層の深さも「既にあるかどうか」も気にせず安全に実行できます。特別な理由がない限り、これが実務での標準形と考えて問題ありません。
04 MODERN APPROACH pathlib.Path.mkdir()という現代的な書き方 osモジュールとpathlibモジュール、今から書くならどちらか
ここまでosモジュールのmkdir・makedirsを解説してきましたが、近年のPythonではpathlibモジュールを使った書き方も広く使われています。「これから新しくコードを書くならpathlibが良い」という声も多いため、両者の違いを整理しておきます。
📚 用語解説
pathlib:Python 3.4以降で標準ライブラリに追加された、ファイルパスをオブジェクトとして扱うモジュール。文字列としてパスを操作するosモジュールに対し、pathlibではPath("report") / "2026" / "09"のように直感的にパスを組み立てられ、Windows・Mac・Linuxの違い(区切り文字の違いなど)も自動で吸収してくれます。
4-1. pathlibでのフォルダ作成コード
from pathlib import Path
# osモジュールのos.makedirs(path, exist_ok=True)に相当
Path("report/2026/09").mkdir(parents=True, exist_ok=True)
pathlibでは、parents=Trueが「親フォルダも含めて再帰的に作成する」というos.makedirs相当の指定、exist_ok=Trueが「既に存在してもエラーにしない」という指定になります。osモジュールとほぼ同じ機能を、より読みやすいオブジェクト指向の書き方で実現できます。
| 項目 | os.mkdir / os.makedirs | pathlib.Path.mkdir() |
|---|---|---|
| 登場時期 | Python黎明期からの標準機能 | Python 3.4以降 |
| 書き方 | 文字列でパスを扱う | Pathオブジェクトでパスを扱う |
| 深い階層の作成 | os.makedirsを使う必要あり | parents=Trueを付けるだけ |
| 既存フォルダの許容 | exist_ok=Trueを指定 | exist_ok=Trueを指定(同じ引数名) |
| OS差異の吸収 | 意識する必要がある場面あり | 自動で吸収されやすい |
| 他のパス操作との連携 | os.path関数を別途呼ぶ | 同じPathオブジェクトでファイル存在確認・拡張子取得なども可能 |
4-2. 結局どちらを使うべきか
既存の業務スクリプトやチームの既存コードがos.mkdir・os.makedirsで統一されているなら、無理に書き換える必要はありません。一方で、これから新しくスクリプトを書く場合は、pathlibを使う方が総合的に扱いやすいというのが実務的な結論です。ファイルの存在確認や拡張子の取得など、フォルダ作成以外のパス操作もまとめてPathオブジェクトで扱えるため、コード全体がすっきりします。
05 ERROR HANDLING よくあるエラーと対処法 フォルダ作成でつまずく3大エラーの原因と解決策
フォルダ作成の処理でつまずくポイントは、実はある程度パターン化されています。ここでは代表的な3つのエラーと、それぞれの対処法を整理します。
5-1. FileExistsError:既にフォルダが存在する
FileExistsError: [Errno 17] File exists: 'report'
📚 用語解説
FileExistsError:作成しようとしたフォルダ(またはファイル)が、既に同じ名前で存在している場合に発生する例外(エラー)。os.mkdirやos.makedirs(exist_ok=Falseの場合)で最も頻繁に遭遇するエラーです。
対処法はシンプルで、exist_ok=Trueを指定するか、事前にos.path.exists()でフォルダの有無をチェックしてから作成するかのどちらかです。繰り返し実行するスクリプトでは、前者(exist_ok=True)の方が圧倒的にシンプルで推奨されます。
5-2. FileNotFoundError:親フォルダが存在しない
FileNotFoundError: [Errno 2] No such file or directory: 'report/2026/09'
これは、os.mkdirを使って「report/2026/09」のような深い階層のフォルダを、親フォルダ(report、report/2026)が存在しない状態で一気に作ろうとしたときに発生します。第1章で触れた通り、os.mkdirは1階層しか作れないため起きるエラーです。対処法は、os.makedirsに切り替えることです。
5-3. PermissionError:アクセス権限が足りない
PermissionError: [Errno 13] Permission denied: '/system/protected'
OS側の設定で、書き込み・フォルダ作成が許可されていない場所に対してフォルダを作ろうとすると発生します。業務システムのサーバー上で、管理者権限が必要なディレクトリに書き込もうとした場合などによく起きます。対処法としては、書き込み権限のある場所(自分のユーザーフォルダ配下など)にパスを変更するか、実行権限自体を見直す必要があります。
業務用スクリプトでは、上記3つ以外の予期しないエラーが発生する可能性もゼロではありません。try: ... except Exception as e: print(f"エラー: {e}")のように囲んでおくと、スクリプト全体が突然落ちるのを防ぎ、原因の特定もしやすくなります。
06 PRACTICAL USE 業務での実践例:日付別・案件別フォルダの自動作成 よくある業務シーンでのコード例2パターン
ここまでの基礎知識を踏まえて、実際の業務でよく使われるフォルダ自動作成のパターンを2つ紹介します。
6-1. 日付別フォルダを自動作成する
日報・レポート・ログファイルなどを日付ごとにフォルダ分けして保存したい場合の定番パターンです。
import os
from datetime import datetime
today = datetime.now()
folder_path = f"reports/{today.year}/{today.month:02d}/{today.day:02d}"
os.makedirs(folder_path, exist_ok=True)
print(f"{folder_path} を作成しました")
このスクリプトを毎朝実行すれば、reports/2026/09/15のような形で、その日専用のフォルダが自動的に用意されます。年・月・日ごとにフォルダが分かれるため、あとから特定の期間のデータを探す作業が格段に楽になります。
6-2. 案件別・顧客別フォルダを自動作成する
営業や案件管理では、案件名や顧客名ごとにフォルダを分けて、その中に見積書・契約書・議事録などをまとめて保存したいケースが多くあります。
import os
projects = ["A社_Webリニューアル", "B社_業務システム導入", "C社_AI活用支援"]
subfolders = ["見積書", "契約書", "議事録", "請求書"]
for project in projects:
for sub in subfolders:
os.makedirs(f"projects/{project}/{sub}", exist_ok=True)
print("全案件のフォルダ構成を作成しました")
二重のfor文(ネストしたループ)を使うことで、案件数×書類種別数のぶんだけ、一気にフォルダ構成を作成できます。案件が10件、書類種別が4種類あれば、合計40個のフォルダが数秒で用意される計算です。手作業でこれをやろうとすると、フォルダを右クリックして「新規作成」を繰り返す単純作業に数十分かかることも珍しくありません。
用意する
Excelやリストで
案件名を管理
定義する
見積書・契約書
議事録など
実行する
os.makedirsで
一括生成
完成
数秒で
統一された構造に
案件ごとに毎回手作業でフォルダを作ると、担当者によって構成がバラバラになりがちです。スクリプトでフォルダ構成をテンプレート化しておけば、誰が実行しても同じ構造のフォルダが作られるため、後任者への引き継ぎや、社内での書類検索が格段にスムーズになります。
07 GENAI CASE STUDY 【独自データ】GENAI社内のフォルダ自動化実運用 Claude Codeでファイル・フォルダ管理をどこまで自動化しているか
ここでは、弊社(株式会社GENAI)が実際にどのようにフォルダ・ファイル管理を自動化しているかを、実データベースで公開します。
7-1. 弊社の契約プランと運用体制
| 項目 | 内容 |
|---|---|
| 契約プラン | Claude Max 20x(月$200 / 約30,000円) |
| 利用開始 | 2025年後半〜 |
| 利用部署 | 経営・営業・広告・開発・経理・秘書業務・個人業務まで全社 |
| フォルダ関連業務の主な用途 | 案件別フォルダ生成、記事・レポート格納構造の管理、日次バックアップ整理 |
弊社では、本記事で扱ったようなos.mkdir・os.makedirsのコードを人間が毎回手書きすることはほとんどありません。「このフォルダ構成で案件フォルダを作って」とClaude Codeに自然言語で指示するだけで、必要なPythonスクリプトの生成から実行までを任せています。
7-2. 業務領域別の削減時間(肌感ベース・2026年9月時点)
| 業務領域 | 主な用途 | 概算削減時間 |
|---|---|---|
| 営業 | 提案書・見積・顧客別資料の自動生成 | 週20時間 → 週2時間 |
| 広告運用 | 週次レポート・CPA分析・配信内容調整 | 週10時間 → 週1時間 |
| ブログ記事 | SEO記事執筆・リライト・内部リンク最適化 | 1本8時間 → 1本1時間 |
| 経理 | 請求書チェック・経費仕訳・Freee連携 | 月40時間 → 月5時間 |
| 秘書業務 | 日報生成・議事録・スケジュール調整 | 日2時間 → 日15分 |
| 開発・ファイル管理 | フォルダ構成の自動生成、スクリプト書き捨て | 都度数時間削減 |
| 個人業務 | メール下書き、雑務タスク整理 | 日1時間 → 日10分 |
上記は弊社の肌感ベースの数値であり、業種・業態・担当者のスキルによって削減時間は変動します。あくまで「Claude Codeを全社で使い倒すとどの程度まで自動化できるか」の参考情報としてご覧ください。「完全自動化」「ゼロになった」という意味ではなく、レビューや微調整は引き続き人間が行っています。
7-3. フォルダ管理を自動化して見えた変化
弊社でフォルダ・ファイル管理をスクリプト化・自動化する前は、案件ごとのフォルダ構成が担当者によって微妙に異なり、「この書類どこにあるんだっけ」という検索コストが地味に積み重なっていました。Claude Codeに「このプロジェクトの標準フォルダ構成で新規作成して」と頼むだけで統一された構造が数秒で用意されるようになってからは、この種の探し物コストがほぼゼロになった実感があります。
08 NO-CODE APPROACH 【独自】非エンジニアのための選択肢 ── コードを書かず任せる os.mkdirの文法を覚えなくても同じことができる時代
ここまで、os.mkdir・os.makedirs・pathlibの文法を細かく解説してきました。ただ最後に、非エンジニアの経営者・管理職の方に伝えたいのは、「この文法を暗記する必要は、今の時代はほとんどない」という事実です。
📚 用語解説
Claude Code:Anthropicが提供する、チャットで指示するだけでファイル操作・コード生成・スクリプト実行まで自律的に行うAIエージェントツール。「このフォルダをこう整理して」といった日本語の指示だけで、裏側で必要なPythonコード(本記事で紹介したos.makedirsなど)を自動生成して実行してくれます。
例えば、本記事の第6章で紹介した「案件別・顧客別フォルダの自動作成」も、Claude Codeであれば次のように話しかけるだけで実現できます。
「projectsフォルダの下に、A社・B社・C社の案件フォルダを作って、
それぞれの中に見積書・契約書・議事録・請求書のフォルダも作っておいて」
この一文を送るだけで、Claude Codeは裏側で本記事の第6章と同じようなPythonスクリプトを自動生成し、実行し、フォルダが正しく作成されたかまで確認して報告してくれます。ターミナル(黒い画面)を開く必要も、os.mkdirとos.makedirsのどちらを使うべきか迷う必要もありません。
日本語で伝える
「案件フォルダを
作って」など
コードを生成
os.makedirs等を
自動選択
確認・報告
作成されたか
自動チェック
人間はコードを
書かなくてよい
8-1. それでも文法を知っておく価値はあるのか
「コードを書かなくていいなら、この記事で解説した内容は不要なのでは?」と思われるかもしれません。しかし、実務ではまったく逆で、裏側の仕組みを知っている人ほど、AIへの指示が的確になる傾向があります。「os.makedirsならexist_okを付けないと二重実行でエラーになる」と知っていれば、「毎日実行しても壊れないようにして」という一言を指示に添えることができ、AIの出力がより実務に即したものになります。
os.mkdirやos.makedirsの文法を丸暗記する必要はありません。「フォルダ作成には複数の書き方があり、繰り返し実行する場合はexist_okという配慮が必要」という考え方の骨組みだけ覚えておけば十分です。あとは実際のコードをClaude Codeに書かせながら、必要に応じてこの記事に戻ってくる使い方がおすすめです。
09 CONCLUSION まとめ フォルダ作成の文法は「知識」として押さえつつ、実行はAIに任せる
この記事では、Pythonのos.mkdir・os.makedirsの使い方の違い、pathlibとの比較、よくあるエラーの対処法、業務での実践例、そして弊社GENAIの実運用データと、非エンジニアでもAIに任せる方法までを整理しました。最後にポイントを振り返ります。
最も伝えたいメッセージは、「フォルダ作成の文法を覚えること」自体がゴールではないということです。目的は、案件管理や書類整理にかかる手作業の時間を減らし、本来やるべき判断や意思決定に時間を使うことのはずです。その目的に対しては、コードを書く力よりも、AIに的確な指示を出す力の方が、今の時代は費用対効果が高いというのが弊社の実感です。
フォルダ管理・業務自動化の設計を、AI鬼管理が一緒に考えます
os.mkdirの文法を覚える時間を、業務そのものをAIに任せる仕組みづくりに変えませんか。
弊社の実運用ノウハウをベースに、個別に自動化設計のご相談を承ります。
ここから先の進め方は、大きく2つあります。
自社で回せるようになりたい方は、AI鬼管理でClaude Code/Codexの使い方から業務設計・社内定着まで伴走を受けながら、社内に仕組みを作る道があります。
覚えるより任せたい方は、AI社員AIKATAでこの記事のような定型業務を丸ごと預ける道があります。料金は月30万円の月額定額、追加費用は0円です。
どちらが合うかは、業務量と社内体制次第です。無料相談・無料適合診断で、貴社の場合はどちらが向くかからご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. os.mkdirとos.makedirsの違いを一言で教えてください。
A. os.mkdirは1階層分のフォルダしか作成できず、親フォルダが存在しないとFileNotFoundErrorになります。一方os.makedirsは、必要な親フォルダも含めて再帰的に自動作成してくれるため、深い階層のフォルダを一括で作りたい場合はos.makedirsを使うのが基本です。
Q. exist_okを付けないとどうなりますか?
A. exist_ok(デフォルトはFalse)を指定しない、または明示的にFalseにした場合、作成しようとしたフォルダが既に存在するとFileExistsErrorが発生し、その時点でプログラムが停止します。毎日実行するようなバッチ処理では、2回目以降の実行で必ずエラーになるため、繰り返し実行するスクリプトにはexist_ok=Trueを付けるのが実務上の標準です。
Q. 既存フォルダがあるとエラーになるのを防ぐにはどうすればいいですか?
A. 最もシンプルな方法は、os.makedirs(path, exist_ok=True)のようにexist_ok=Trueを指定することです。もう一つの方法として、os.path.exists(path)で事前にフォルダの有無を確認してからos.mkdirを呼び出すやり方もありますが、コード量が増えるためexist_okを使う方が簡潔で推奨されます。
Q. os.mkdirのmode引数は何のためにありますか?
A. 作成するフォルダのアクセス権限(パーミッション)を、0o755のような8進数の数値で指定するための引数です。誰が読み書き・実行できるかを制御する仕組みで、主にLinux・Mac環境でのサーバー運用時に使われます。Windows環境ではこの引数の効果はかなり限定的になる点に注意してください。
Q. パスに日本語や全角文字を使っても大丈夫ですか?
A. 現在のPython(3系)は文字列の扱いがUnicodeベースのため、日本語のフォルダ名も基本的に問題なく扱えます。ただし、OSやファイルシステムによっては特定の記号(全角スペースや一部の記号)が原因でエラーになることもあるため、業務で使う場合はアンダースコアやハイフンなど、環境を問わず安全な区切り文字を併用するのが無難です。
Q. pathlibとosモジュール、どちらを使うべきですか?
A. 既存のスクリプトやチームのコードがosモジュールで統一されているなら、無理に書き換える必要はありません。一方でこれから新しくコードを書くのであれば、パス操作全般を直感的に扱えるpathlibの方が総合的にはおすすめです。どちらもPython標準ライブラリなので追加インストールは不要です。
Q. Windows・Mac・Linuxで挙動に違いはありますか?
A. os.mkdirやos.makedirsの基本的な挙動自体はOSを問わず共通です。ただし、パスの区切り文字(Windowsは円マーク、Mac/Linuxはスラッシュ)や、mode引数によるアクセス権限制御の効き方には差があります。pathlibを使うと、こうしたOSごとの違いをある程度自動で吸収してくれるメリットがあります。
Q. プログラミング未経験でも、フォルダ自動化は実現できますか?
A. 実現できます。Claude Codeのようなツールを使えば、「案件ごとにフォルダを分けて、その中に書類種別ごとのフォルダも作って」といった日本語の指示だけで、裏側のPythonコードの生成から実行までを任せられます。os.mkdirやos.makedirsの文法を暗記していなくても、この記事で紹介したのと同じ業務自動化を実現できる時代になっています。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AI社員AIKATAへのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




