Pythonを使ってフォルダ(ディレクトリ)を作成する方法は、プログラムからファイルを管理したいときにとても便利です。
たとえば、ログファイルの保存先を日付ごとに自動で作成したり、ユーザーごとのフォルダを動的に用意したりと、活用の幅は非常に広がります。
この記事では、Pythonを使ってフォルダを作成する基本的な方法から、存在チェックやエラー処理、複数階層の作成、応用テクニックまでを丁寧に解説します。
プログラミング初心者の方にもわかりやすいよう、実際に動かせるコード例を交えながらご紹介します。
Pythonでフォルダを作成する基本:os.mkdir()
Pythonには標準でファイルやフォルダを扱うためのモジュール「os
」があります。
もっとも基本的なフォルダ作成方法は、os.mkdir()
関数を使うことです。
import os
os.mkdir("test_folder")
このコードを実行すると、現在のスクリプトがある場所に「test_folder」というフォルダが作成されます。
ただし、すでに同じ名前のフォルダが存在している場合には、FileExistsError
が発生します。
フォルダが存在しないときだけ作成する方法
エラーを避けるためには、フォルダの存在を事前にチェックするのが定番です。os.path.exists()
を使えば、フォルダやファイルの存在を確認できます。
import os
folder_name = "logs"
if not os.path.exists(folder_name):
os.mkdir(folder_name)
print(f"{folder_name} を作成しました")
else:
print(f"{folder_name} は既に存在します")
このようにしておくことで、スクリプトの実行時にエラーが発生しにくくなります。
サブフォルダなどの複数階層を作成する:os.makedirs()
os.mkdir()
では1階層しか作成できません。
たとえば parent/child
というように、親フォルダとその中の子フォルダを一度に作りたい場合は、os.makedirs()
を使います。
import os
os.makedirs("parent_folder/child_folder", exist_ok=True)
このとき exist_ok=True
としておくと、既にフォルダが存在していてもエラーが発生しません。
このオプションは Python 3.2 以降で使用可能です。
作成したフォルダにファイルを保存する例
作成したフォルダにファイルを保存するケースも多いでしょう。
たとえばログファイルなどを保存するために、以下のようなコードが書けます。
import os
log_dir = "logs"
os.makedirs(log_dir, exist_ok=True)
log_file = os.path.join(log_dir, "log.txt")
with open(log_file, "w") as f:
f.write("ログの内容を書きます")
os.path.join()
を使うことで、OSに依存しないパスを生成できます。WindowsとLinuxのどちらでも安全に動作します。
日付でフォルダを自動生成する
実務では、日付ごとにフォルダを作ってファイルを整理する場面も多いです。
Pythonの datetime
モジュールを組み合わせれば、日付付きのフォルダ名を簡単に生成できます。
import os
from datetime import datetime
today = datetime.now().strftime("%Y-%m-%d")
folder_name = f"backup_{today}"
os.makedirs(folder_name, exist_ok=True)
このコードを実行すると、たとえば backup_2025-05-01
のようなフォルダが作成されます。
自動バックアップやログ管理に便利です。
フォルダ作成時のエラー対策
フォルダ作成時に起こり得るエラーには、以下のようなものがあります。
- PermissionError:書き込み権限がない場所に作ろうとした
- FileExistsError:すでに同名のファイルやフォルダがある
- OSError:ファイルシステムの制限など
これらをハンドリングするには try-except
文を使います。
import os
try:
os.mkdir("new_folder")
except FileExistsError:
print("フォルダはすでに存在しています")
except PermissionError:
print("この場所にはフォルダを作成できません")
except Exception as e:
print(f"予期せぬエラーが発生しました: {e}")
pathlibを使ったフォルダ作成(Python 3.5以降)
Python 3.5以降では、pathlib
モジュールが推奨されています。
直感的でオブジェクト指向的な操作が可能です。
from pathlib import Path
p = Path("my_pathlib_folder")
p.mkdir(exist_ok=True)
複数階層を作りたい場合は、parents=True
を追加します。
p = Path("parent/child/grandchild")
p.mkdir(parents=True, exist_ok=True)
pathlib
は読みやすく、コードの可読性も高まるため、今後はこちらの利用をおすすめします。
実践:ユーザーごとのフォルダを自動作成するスクリプト
最後に、実用的なサンプルとして複数ユーザーのフォルダを自動作成するスクリプトをご紹介します。
import os
users = ["tanaka", "suzuki", "yamada"]
base_dir = "user_folders"
for user in users:
user_folder = os.path.join(base_dir, user)
os.makedirs(user_folder, exist_ok=True)
print(f"{user_folder} を作成しました")
このコードは、次のようなフォルダ構成を自動で生成します。
コピーする編集するuser_folders/
├── tanaka/
├── suzuki/
└── yamada/
まとめ
Pythonでのフォルダ作成はとても簡単で、少し応用すれば様々な用途に活用できます。
os.mkdir()
で1階層のフォルダを作成os.makedirs()
で複数階層も対応exist_ok
やtry-except
でエラーに強くpathlib
でより直感的な書き方も可能
業務自動化やスクリプト作成において、フォルダ管理は重要な要素です。
ぜひ本記事を参考に、あなたのPythonスクリプトをさらに便利に進化させてください。