[Python] フォルダがない場合のみ新しいフォルダを作成する方法
Pythonでフォルダがない場合に新しいフォルダを作成するには、os
モジュールのos.makedirs()
やpathlib
モジュールのPath.mkdir()
を使用します。
os.makedirs()
は、指定したパスにフォルダが存在しない場合のみ作成し、既に存在する場合はエラーを回避するためにexist_ok=True
を指定します。
同様に、Path.mkdir()
もexist_ok=True
を指定することで、フォルダが存在していてもエラーを発生させません。
osモジュールを使ったフォルダ作成の詳細
Pythonのos
モジュールは、オペレーティングシステムとのインターフェースを提供し、ファイルやディレクトリの操作を簡単に行うことができます。
ここでは、フォルダを作成するための具体的な方法を解説します。
os.makedirs()の使い方
os.makedirs()関数
は、指定したパスに新しいディレクトリを作成します。
親ディレクトリが存在しない場合は、親ディレクトリも同時に作成します。
以下はその基本的な使い方です。
import os
# 新しいフォルダを作成するパス
folder_path = "新しいフォルダ/サブフォルダ"
# フォルダを作成
os.makedirs(folder_path)
このコードを実行すると、指定したパスに新しいフォルダが作成されます。
exist_ok=Trueの役割
os.makedirs()
にはexist_ok
というオプション引数があります。
これをTrue
に設定すると、指定したフォルダが既に存在する場合でもエラーを発生させず、何もせずに処理を続行します。
以下はその例です。
import os
folder_path = "新しいフォルダ/サブフォルダ"
# フォルダを作成(既に存在してもエラーにならない)
os.makedirs(folder_path, exist_ok=True)
このコードを実行しても、フォルダが既に存在する場合はエラーが発生せず、プログラムは正常に終了します。
フォルダの存在確認を行うos.path.exists()
フォルダを作成する前に、そのフォルダが既に存在するかどうかを確認することができます。
os.path.exists()関数
を使用して、指定したパスが存在するかどうかをチェックします。
以下はその例です。
import os
folder_path = "新しいフォルダ/サブフォルダ"
# フォルダの存在確認
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print("フォルダを作成しました。")
else:
print("フォルダは既に存在します。")
このコードを実行すると、フォルダが存在しない場合は新しく作成され、存在する場合はその旨が表示されます。
os.makedirs()のエラーハンドリング
フォルダ作成時にエラーが発生する可能性があります。
例えば、パスに無効な文字が含まれている場合や、必要な権限がない場合です。
これらのエラーを適切に処理するために、try
とexcept
を使用します。
以下はその例です。
import os
folder_path = "新しいフォルダ/サブフォルダ"
try:
os.makedirs(folder_path)
print("フォルダを作成しました。")
except OSError as e:
print(f"エラーが発生しました: {e}")
このコードを実行すると、フォルダ作成時にエラーが発生した場合、そのエラーメッセージが表示されます。
これにより、問題の特定と修正が容易になります。
pathlibモジュールを使ったフォルダ作成の詳細
Pythonのpathlib
モジュールは、パス操作をオブジェクト指向で行うための便利な機能を提供します。
フォルダの作成や存在確認も簡単に行うことができます。
ここでは、pathlib
を使用したフォルダ作成の方法を詳しく解説します。
Path.mkdir()の使い方
Path.mkdir()メソッド
を使用すると、新しいディレクトリを作成できます。
以下はその基本的な使い方です。
from pathlib import Path
# 新しいフォルダを作成するパス
folder_path = Path("新しいフォルダ/サブフォルダ")
# フォルダを作成
folder_path.mkdir()
このコードを実行すると、指定したパスに新しいフォルダが作成されます。
exist_ok=Trueの役割
Path.mkdir()メソッド
にもexist_ok
というオプション引数があります。
これをTrue
に設定すると、指定したフォルダが既に存在する場合でもエラーを発生させず、処理を続行します。
以下はその例です。
from pathlib import Path
folder_path = Path("新しいフォルダ/サブフォルダ")
# フォルダを作成(既に存在してもエラーにならない)
folder_path.mkdir(exist_ok=True)
このコードを実行しても、フォルダが既に存在する場合はエラーが発生せず、プログラムは正常に終了します。
parents=Trueで親ディレクトリも作成
Path.mkdir()メソッド
のparents
引数をTrue
に設定すると、親ディレクトリが存在しない場合でも自動的に作成されます。
以下はその例です。
from pathlib import Path
folder_path = Path("新しいフォルダ/サブフォルダ")
# 親ディレクトリも作成
folder_path.mkdir(parents=True, exist_ok=True)
このコードを実行すると、新しいフォルダ
が存在しない場合でも自動的に作成され、その中にサブフォルダ
が作成されます。
Path.exists()でフォルダの存在確認
フォルダを作成する前に、そのフォルダが既に存在するかどうかを確認することができます。
Path.exists()メソッド
を使用して、指定したパスが存在するかどうかをチェックします。
以下はその例です。
from pathlib import Path
folder_path = Path("新しいフォルダ/サブフォルダ")
# フォルダの存在確認
if not folder_path.exists():
folder_path.mkdir(parents=True)
print("フォルダを作成しました。")
else:
print("フォルダは既に存在します。")
このコードを実行すると、フォルダが存在しない場合は新しく作成され、存在する場合はその旨が表示されます。
Path.mkdir()のエラーハンドリング
フォルダ作成時にエラーが発生する可能性があります。
例えば、パスに無効な文字が含まれている場合や、必要な権限がない場合です。
これらのエラーを適切に処理するために、try
とexcept
を使用します。
以下はその例です。
from pathlib import Path
folder_path = Path("新しいフォルダ/サブフォルダ")
try:
folder_path.mkdir(parents=True)
print("フォルダを作成しました。")
except OSError as e:
print(f"エラーが発生しました: {e}")
このコードを実行すると、フォルダ作成時にエラーが発生した場合、そのエラーメッセージが表示されます。
これにより、問題の特定と修正が容易になります。
フォルダ作成の応用例
フォルダ作成の基本を理解したら、さまざまな応用例に挑戦してみましょう。
ここでは、日付や時間を使ったフォルダ名の自動生成、ユーザー入力に基づくフォルダ作成、複数のフォルダを一度に作成する方法、フォルダ作成後にファイルを自動生成する方法について解説します。
日付や時間を使ったフォルダ名の自動生成
日付や時間を使ってフォルダ名を自動生成することで、整理されたフォルダ構造を作成できます。
以下は、現在の日付を使ってフォルダを作成する例です。
from pathlib import Path
from datetime import datetime
# 現在の日付を取得
current_date = datetime.now().strftime("%Y-%m-%d")
folder_path = Path(f"バックアップ_{current_date}")
# フォルダを作成
folder_path.mkdir(exist_ok=True)
print(f"{folder_path} を作成しました。")
このコードを実行すると、バックアップ_YYYY-MM-DD
という形式のフォルダが作成されます。
ユーザー入力に基づくフォルダ作成
ユーザーからの入力を受け取ってフォルダを作成することも可能です。
以下は、ユーザーにフォルダ名を入力させて作成する例です。
from pathlib import Path
# ユーザーからフォルダ名を入力
folder_name = input("作成するフォルダ名を入力してください: ")
folder_path = Path(folder_name)
# フォルダを作成
folder_path.mkdir(exist_ok=True)
print(f"{folder_path} を作成しました。")
このコードを実行すると、ユーザーが指定した名前のフォルダが作成されます。
複数のフォルダを一度に作成する方法
複数のフォルダを一度に作成するには、リストを使ってフォルダ名を管理し、ループを使って作成します。
以下はその例です。
from pathlib import Path
# 作成するフォルダ名のリスト
folder_names = ["フォルダ1", "フォルダ2", "フォルダ3"]
base_path = Path("複数フォルダ")
# 各フォルダを作成
for folder_name in folder_names:
folder_path = base_path / folder_name
folder_path.mkdir(parents=True, exist_ok=True)
print(f"{folder_path} を作成しました。")
このコードを実行すると、複数フォルダ
の中にフォルダ1
、フォルダ2
、フォルダ3
が作成されます。
フォルダ作成後にファイルを自動生成する方法
フォルダを作成した後に、特定のファイルを自動生成することもできます。
以下は、フォルダを作成した後にテキストファイルを生成する例です。
from pathlib import Path
folder_path = Path("新しいフォルダ")
folder_path.mkdir(exist_ok=True)
# フォルダ内にファイルを作成
file_path = folder_path / "README.txt"
with open(file_path, "w", encoding="utf-8") as file:
file.write("このフォルダは自動生成されました。")
print(f"{file_path} を作成しました。")
このコードを実行すると、新しいフォルダ
内にREADME.txt
というファイルが作成され、その中に指定したテキストが書き込まれます。
まとめ
この記事では、Pythonのos
モジュールとpathlib
モジュールを使用してフォルダを作成する方法について詳しく解説しました。
フォルダ作成の基本から応用例まで幅広く取り上げ、実際のコード例を通じて具体的な使い方を示しました。
これを機に、フォルダ作成の技術を活用して、より効率的なファイル管理を行ってみてください。