[Python] フォルダがない場合のみ新しいフォルダを作成する方法

Pythonでフォルダがない場合に新しいフォルダを作成するには、osモジュールのos.makedirs()pathlibモジュールのPath.mkdir()を使用します。

os.makedirs()は、指定したパスにフォルダが存在しない場合のみ作成し、既に存在する場合はエラーを回避するためにexist_ok=Trueを指定します。

同様に、Path.mkdir()exist_ok=Trueを指定することで、フォルダが存在していてもエラーを発生させません。

この記事でわかること
  • osモジュールを使ったフォルダ作成方法
  • pathlibモジュールの活用法
  • フォルダ名の自動生成技術
  • ユーザー入力によるフォルダ作成
  • エラーハンドリングの重要性

目次から探す

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()のエラーハンドリング

フォルダ作成時にエラーが発生する可能性があります。

例えば、パスに無効な文字が含まれている場合や、必要な権限がない場合です。

これらのエラーを適切に処理するために、tryexceptを使用します。

以下はその例です。

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()のエラーハンドリング

フォルダ作成時にエラーが発生する可能性があります。

例えば、パスに無効な文字が含まれている場合や、必要な権限がない場合です。

これらのエラーを適切に処理するために、tryexceptを使用します。

以下はその例です。

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というファイルが作成され、その中に指定したテキストが書き込まれます。

よくある質問

os.makedirs()とPath.mkdir()の違いは?

os.makedirs()Path.mkdir()はどちらもフォルダを作成するためのメソッドですが、いくつかの違いがあります。

  • モジュールの違い: os.makedirs()osモジュールの関数であり、Path.mkdir()pathlibモジュールのメソッドです。
  • 親ディレクトリの作成: os.makedirs()は親ディレクトリが存在しない場合に自動的に作成しますが、Path.mkdir()parents=Trueを指定することで同様の機能を持ちます。
  • エラーハンドリング: os.makedirs()exist_ok引数を持ち、既存のフォルダがあってもエラーを発生させないことができます。

Path.mkdir()も同様にexist_okを持っていますが、parents引数も併せて使用することができます。

フォルダが存在するかどうかを確認する方法は?

フォルダが存在するかどうかを確認するには、以下の方法を使用します。

  • osモジュールの場合: os.path.exists()を使用して、指定したパスが存在するかどうかを確認します。
  import os
  if os.path.exists("フォルダ名"):
      print("フォルダは存在します。")
  • pathlibモジュールの場合: Path.exists()メソッドを使用して、指定したパスが存在するかどうかを確認します。
  from pathlib import Path
  if Path("フォルダ名").exists():
      print("フォルダは存在します。")

フォルダ作成時にパーミッションエラーが発生した場合の対処法は?

フォルダ作成時にパーミッションエラーが発生した場合、以下の対処法があります。

  1. 権限の確認: フォルダを作成しようとしているディレクトリに対する書き込み権限があるか確認します。

必要に応じて、管理者権限で実行するか、権限を変更します。

  1. パスの確認: 指定したパスが正しいか、無効な文字が含まれていないか確認します。
  2. エラーハンドリング: tryexceptを使用してエラーを捕捉し、適切なエラーメッセージを表示することで、問題の特定を容易にします。
   try:
       os.makedirs("フォルダ名")
   except PermissionError:
       print("パーミッションエラーが発生しました。権限を確認してください。")

これらの対処法を試すことで、パーミッションエラーを解決できる可能性があります。

まとめ

この記事では、Pythonのosモジュールとpathlibモジュールを使用してフォルダを作成する方法について詳しく解説しました。

フォルダ作成の基本から応用例まで幅広く取り上げ、実際のコード例を通じて具体的な使い方を示しました。

これを機に、フォルダ作成の技術を活用して、より効率的なファイル管理を行ってみてください。

  • URLをコピーしました!
目次から探す