今回は、Pythonでディレクトリ(フォルダ)を作成する方法についてご紹介します。
Pythonでディレクトリを作成するメリットと概要
Pythonには標準ライブラリでディレクトリ作成を行う複数の方法があります。
代表的な方法として、os.mkdir()、os.makedirs()、pathlibモジュールのPath.mkdir()があります。
用途やディレクトリ階層の深さによって使い分けることで、作業効率を高めることができます。
os.mkdir()を使ったディレクトリ作成
os.mkdir()は、指定したパスに単一のディレクトリを作成します。
親ディレクトリが存在しない場合はエラーになる点に注意が必要です。
以下の例では、dir_nameというフォルダが存在しない場合に作成します。
1 2 3 4 5 6 7 8 9 |
import os dir_name = "sample_dir" if not os.path.exists(dir_name): os.mkdir(dir_name) print(f"ディレクトリ '{dir_name}' を作成しました。") else: print(f"ディレクトリ '{dir_name}' は既に存在します。") |
上記コードを実行すると、次のような結果が得られます。
ディレクトリ ‘sample_dir’ を作成しました。
os.makedirs()で再帰的なディレクトリ作成
os.makedirs()は、中間ディレクトリを含めて一度に作成することが可能です。
また、exist_ok=Trueを指定することで、既にディレクトリが存在していてもエラーになりません。
下記の例では、ネストしたディレクトリを再帰的に作成しています。
1 2 3 4 5 6 |
import os nested_dir = "parent_dir/child_dir/grandchild_dir" os.makedirs(nested_dir, exist_ok=True) print(f"ディレクトリ '{nested_dir}' を作成しました。(既に存在していれば何もしません)") |
実行結果は以下の通りです。
ディレクトリ ‘parent_dir/child_dir/grandchild_dir’ を作成しました。(既に存在していれば何もしません)
pathlibモジュールを使ったディレクトリ作成
Python 3.4以降で利用できるpathlibモジュールを使うと、パスをオブジェクト指向で扱えるようになります。
Path.mkdir()メソッドにparents=Trueとexist_ok=Trueを指定すると、階層構造を一度に作成し、既に存在する場合でもエラーを抑止できます。
コードは以下の通りです。
1 2 3 4 5 |
from pathlib import Path dir_path = Path("example_dir/subdir") dir_path.mkdir(parents=True, exist_ok=True) print(f"ディレクトリ '{dir_path}' を作成しました。") |
実行結果は次のようになります。
ディレクトリ ‘example_dir/subdir’ を作成しました。
よくあるエラーと対策
ディレクトリを作成する際には、いくつかのエラーが発生する可能性があります。
- FileExistsError:作成しようとしたディレクトリが既に存在する場合に起こるエラーです。os.makedirs()やPath.mkdir()でexist_ok=Trueを指定すると回避できます。
- PermissionError:作成先のディレクトリに対して権限がない場合に起こります。実行ユーザの権限を確認するか、os.chmod()などで適切に権限を設定する必要があります。
- FileNotFoundError:os.mkdir()で、親ディレクトリが存在しない状態でネストされたディレクトリを作成しようとすると発生します。再帰的に作成する必要がある場合はos.makedirs()やPath.mkdir(parents=True)を使用します。
これらのエラーを想定して、try-except構文を用いたエラーハンドリングを行うことで、プログラムが予期せず停止するのを防ぐことも可能です。
まとめ
Pythonでディレクトリを作成する方法は、用途によって最適な選択肢が異なります。
単一階層ならos.mkdir()、複数階層ならos.makedirs()やpathlibが便利です。
エラー対策も含めて、目的や環境に応じた方法を選ぶとスムーズに作業できます。