[Python] 連番フォルダを一括で作成する方法

Pythonで連番フォルダを一括作成するには、osまたはpathlibモジュールを使用します。

os.makedirs()pathlib.Path.mkdir()を使ってフォルダを作成し、forループで連番を生成します。

例えば、range()関数を使って連番を生成し、フォルダ名にその番号を付けて順次作成します。

os.path.exists()pathlib.Path.exists()でフォルダの存在を確認し、重複を避けることも可能です。

この記事でわかること
  • Pythonで連番フォルダを作成する方法
  • osとpathlibの使い方の違い
  • フォルダ名のカスタマイズ方法
  • エラーハンドリングの重要性
  • サブフォルダを含む構造の作成方法

目次から探す

連番フォルダを作成するための基本的な考え方

フォルダ作成の基本

Pythonでは、フォルダを作成するために主にosモジュールやpathlibモジュールを使用します。

これらのモジュールを使うことで、プログラムから簡単にフォルダを作成したり、管理したりすることができます。

基本的なフォルダ作成の流れは以下の通りです。

スクロールできます
手順説明
1必要なモジュールをインポートする
2フォルダ名を決定する
3フォルダを作成する関数を呼び出す
4エラーハンドリングを行う

連番の生成方法

連番を生成するためには、Pythonのrange()関数を使用します。

この関数を使うことで、指定した範囲の整数を簡単に生成することができます。

例えば、1から10までの連番を生成する場合、以下のように記述します。

# 1から10までの連番を生成
for i in range(1, 11):
    print(i)

このコードを実行すると、1から10までの数字が順に出力されます。

1
2
3
4
5
6
7
8
9
10

フォルダの存在確認とエラーハンドリング

フォルダを作成する際には、既に同名のフォルダが存在するかどうかを確認することが重要です。

これを行うためには、os.path.exists()関数を使用します。

もしフォルダが存在する場合は、エラーメッセージを表示するなどの処理を行います。

以下はその一例です。

import os
folder_name = "example_folder"
# フォルダの存在確認
if not os.path.exists(folder_name):
    os.makedirs(folder_name)  # フォルダを作成
    print(f"{folder_name}を作成しました。")
else:
    print(f"{folder_name}は既に存在します。")

このコードを実行すると、指定したフォルダが存在しない場合は作成され、存在する場合はその旨が表示されます。

osモジュールを使った連番フォルダ作成の実装例

os.makedirs()の使い方

os.makedirs()関数は、指定したパスにフォルダを作成するための関数です。

この関数は、親フォルダが存在しない場合でも、必要な親フォルダをすべて作成します。

基本的な使い方は以下の通りです。

import os
# フォルダを作成する
os.makedirs("新しいフォルダ/サブフォルダ")

このコードを実行すると、新しいフォルダとその中のサブフォルダが作成されます。

range()を使った連番生成

range()関数を使用することで、指定した範囲の整数を生成し、連番を作成することができます。

例えば、1から5までの連番を生成する場合、以下のように記述します。

# 1から5までの連番を生成
for i in range(1, 6):
    print(i)

このコードを実行すると、1から5までの数字が順に出力されます。

1
2
3
4
5

フォルダの存在確認とエラーハンドリング

フォルダを作成する前に、同名のフォルダが既に存在するかどうかを確認することが重要です。

これにはos.path.exists()関数を使用します。

以下は、フォルダの存在確認とエラーハンドリングの例です。

import os
folder_name = "連番フォルダ"
# フォルダの存在確認
if not os.path.exists(folder_name):
    os.makedirs(folder_name)  # フォルダを作成
    print(f"{folder_name}を作成しました。")
else:
    print(f"{folder_name}は既に存在します。")

このコードを実行すると、指定したフォルダが存在しない場合は作成され、存在する場合はその旨が表示されます。

実装例のコード解説

以下に、osモジュールを使用して連番フォルダを作成する実装例を示します。

この例では、1から5までの連番フォルダを作成します。

import os
# 連番フォルダの作成
for i in range(1, 6):
    folder_name = f"フォルダ_{i}"
    
    # フォルダの存在確認
    if not os.path.exists(folder_name):
        os.makedirs(folder_name)  # フォルダを作成
        print(f"{folder_name}を作成しました。")
    else:
        print(f"{folder_name}は既に存在します。")

このコードでは、forループを使用して1から5までの連番を生成し、それぞれの番号を使ってフォルダ名を作成しています。

フォルダが存在しない場合は新たに作成し、存在する場合はその旨を表示します。

実行結果は以下のようになります。

フォルダ_1を作成しました。
フォルダ_2を作成しました。
フォルダ_3を作成しました。
フォルダ_4を作成しました。
フォルダ_5を作成しました。

このようにして、簡単に連番フォルダを作成することができます。

pathlibモジュールを使った連番フォルダ作成の実装例

pathlib.Path.mkdir()の使い方

pathlibモジュールは、ファイルシステムのパスをオブジェクト指向で扱うためのモジュールです。

Pathクラスmkdir()メソッドを使用することで、フォルダを作成することができます。

このメソッドは、親フォルダが存在しない場合に自動的に作成するオプションも提供しています。

基本的な使い方は以下の通りです。

from pathlib import Path
# フォルダを作成する
path = Path("新しいフォルダ")
path.mkdir(parents=True, exist_ok=True)  # 親フォルダも作成し、既存の場合はエラーを無視

このコードを実行すると、新しいフォルダが作成されます。

parents=Trueを指定することで、必要な親フォルダも作成され、exist_ok=Trueを指定することで、既に存在する場合はエラーを発生させません。

forループで連番を生成する方法

forループを使用して連番を生成する方法は、range()関数と組み合わせて簡単に実現できます。

以下のように記述します。

# 1から5までの連番を生成
for i in range(1, 6):
    print(i)

このコードを実行すると、1から5までの数字が順に出力されます。

1
2
3
4
5

フォルダの存在確認とエラーハンドリング

pathlibモジュールを使用する場合、フォルダの存在確認はPath.exists()メソッドを使って行います。

以下は、フォルダの存在確認とエラーハンドリングの例です。

from pathlib import Path
folder_name = Path("連番フォルダ")
# フォルダの存在確認
if not folder_name.exists():
    folder_name.mkdir()  # フォルダを作成
    print(f"{folder_name}を作成しました。")
else:
    print(f"{folder_name}は既に存在します。")

このコードを実行すると、指定したフォルダが存在しない場合は作成され、存在する場合はその旨が表示されます。

実装例のコード解説

以下に、pathlibモジュールを使用して連番フォルダを作成する実装例を示します。

この例では、1から5までの連番フォルダを作成します。

from pathlib import Path
# 連番フォルダの作成
for i in range(1, 6):
    folder_name = Path(f"フォルダ_{i}")
    
    # フォルダの存在確認
    if not folder_name.exists():
        folder_name.mkdir()  # フォルダを作成
        print(f"{folder_name}を作成しました。")
    else:
        print(f"{folder_name}は既に存在します。")

このコードでは、forループを使用して1から5までの連番を生成し、それぞれの番号を使ってフォルダ名を作成しています。

フォルダが存在しない場合は新たに作成し、存在する場合はその旨を表示します。

実行結果は以下のようになります。

フォルダ_1を作成しました。
フォルダ_2を作成しました。
フォルダ_3を作成しました。
フォルダ_4を作成しました。
フォルダ_5を作成しました。

このようにして、pathlibモジュールを使って簡単に連番フォルダを作成することができます。

応用例:連番フォルダのカスタマイズ

フォルダ名にプレフィックスやサフィックスを追加する

フォルダ名にプレフィックスやサフィックスを追加することで、フォルダの識別が容易になります。

以下の例では、フォルダ名に「プロジェクト_」というプレフィックスを追加しています。

from pathlib import Path
# プレフィックスを設定
prefix = "プロジェクト_"
for i in range(1, 6):
    folder_name = Path(f"{prefix}フォルダ_{i}")
    folder_name.mkdir(exist_ok=True)  # フォルダを作成
    print(f"{folder_name}を作成しました。")

このコードを実行すると、プロジェクト_フォルダ_1からプロジェクト_フォルダ_5までのフォルダが作成されます。

フォルダの作成場所を指定する

フォルダの作成場所を指定することで、特定のディレクトリ内にフォルダを作成できます。

以下の例では、/home/user/documentsディレクトリ内にフォルダを作成しています。

from pathlib import Path
# 作成場所を指定
base_path = Path("/home/user/documents")
for i in range(1, 6):
    folder_name = base_path / f"フォルダ_{i}"
    folder_name.mkdir(exist_ok=True)  # フォルダを作成
    print(f"{folder_name}を作成しました。")

このコードを実行すると、指定したディレクトリ内に連番フォルダが作成されます。

フォルダの作成数を動的に変更する

フォルダの作成数を動的に変更することで、ユーザーの入力に応じたフォルダを作成できます。

以下の例では、ユーザーから作成するフォルダの数を入力として受け取ります。

from pathlib import Path
# ユーザーから作成数を取得
num_folders = int(input("作成するフォルダの数を入力してください: "))
for i in range(1, num_folders + 1):
    folder_name = Path(f"フォルダ_{i}")
    folder_name.mkdir(exist_ok=True)  # フォルダを作成
    print(f"{folder_name}を作成しました。")

このコードを実行すると、ユーザーが指定した数のフォルダが作成されます。

日付や時間をフォルダ名に含める

フォルダ名に日付や時間を含めることで、作成日時を明示的に示すことができます。

以下の例では、フォルダ名に現在の日付を追加しています。

from pathlib import Path
from datetime import datetime
# 現在の日付を取得
current_date = datetime.now().strftime("%Y%m%d")
for i in range(1, 6):
    folder_name = Path(f"フォルダ_{current_date}_{i}")
    folder_name.mkdir(exist_ok=True)  # フォルダを作成
    print(f"{folder_name}を作成しました。")

このコードを実行すると、フォルダ_20231001_1からフォルダ_20231001_5までのフォルダが作成されます。

フォルダの中にファイルを自動生成する

フォルダを作成する際に、その中に特定のファイルを自動的に生成することも可能です。

以下の例では、各フォルダ内にREADME.txtというファイルを作成しています。

from pathlib import Path
for i in range(1, 6):
    folder_name = Path(f"フォルダ_{i}")
    folder_name.mkdir(exist_ok=True)  # フォルダを作成
    
    # README.txtファイルを作成
    readme_file = folder_name / "README.txt"
    with open(readme_file, "w", encoding="utf-8") as f:
        f.write("このフォルダは自動生成されました。")
    
    print(f"{folder_name}を作成し、{readme_file}を生成しました。")

このコードを実行すると、各フォルダ内にREADME.txtファイルが作成され、その中に指定したテキストが書き込まれます。

応用例:サブフォルダを含む連番フォルダの作成

サブフォルダを含むフォルダ構造の作成

サブフォルダを含むフォルダ構造を作成することで、より整理されたデータ管理が可能になります。

以下の例では、メインフォルダの中にサブフォルダ1サブフォルダ2を作成します。

from pathlib import Path
# メインフォルダを作成
main_folder = Path("メインフォルダ")
main_folder.mkdir(exist_ok=True)  # フォルダを作成
# サブフォルダを作成
subfolder1 = main_folder / "サブフォルダ1"
subfolder1.mkdir(exist_ok=True)
subfolder2 = main_folder / "サブフォルダ2"
subfolder2.mkdir(exist_ok=True)
print(f"{main_folder}とそのサブフォルダを作成しました。")

このコードを実行すると、メインフォルダの中にサブフォルダ1サブフォルダ2が作成されます。

ネストされたフォルダの作成方法

ネストされたフォルダを作成することで、さらに階層的なフォルダ構造を実現できます。

以下の例では、メインフォルダの中にサブフォルダ1、その中にサブサブフォルダ1を作成します。

from pathlib import Path
# メインフォルダを作成
main_folder = Path("メインフォルダ")
main_folder.mkdir(exist_ok=True)
# ネストされたサブフォルダを作成
nested_subfolder = main_folder / "サブフォルダ1" / "サブサブフォルダ1"
nested_subfolder.mkdir(parents=True, exist_ok=True)  # 親フォルダも作成
print(f"{nested_subfolder}を作成しました。")

このコードを実行すると、メインフォルダ/サブフォルダ1/サブサブフォルダ1が作成されます。

parents=Trueを指定することで、必要な親フォルダも自動的に作成されます。

サブフォルダに連番を付ける方法

サブフォルダに連番を付けることで、複数のサブフォルダを効率的に作成できます。

以下の例では、メインフォルダの中にサブフォルダ1からサブフォルダ5までを作成します。

from pathlib import Path
# メインフォルダを作成
main_folder = Path("メインフォルダ")
main_folder.mkdir(exist_ok=True)
# サブフォルダに連番を付けて作成
for i in range(1, 6):
    subfolder_name = main_folder / f"サブフォルダ{i}"
    subfolder_name.mkdir(exist_ok=True)  # フォルダを作成
    print(f"{subfolder_name}を作成しました。")

このコードを実行すると、メインフォルダの中にサブフォルダ1からサブフォルダ5までが作成されます。

これにより、整理されたフォルダ構造を簡単に作成することができます。

応用例:エラーハンドリングと例外処理

フォルダ作成時の一般的なエラー

フォルダを作成する際には、いくつかの一般的なエラーが発生する可能性があります。

以下は、よく見られるエラーの例です。

スクロールできます
エラーの種類説明
FileExistsError同名のフォルダが既に存在する場合に発生します。
PermissionErrorフォルダを作成する権限がない場合に発生します。
OSErrorその他の入出力エラーが発生した場合に発生します。

これらのエラーを適切に処理することで、プログラムの安定性を向上させることができます。

try-exceptを使ったエラーハンドリング

Pythonでは、try-except文を使用してエラーハンドリングを行います。

以下の例では、フォルダを作成する際に発生する可能性のあるエラーを捕捉し、適切なメッセージを表示します。

from pathlib import Path
folder_name = Path("新しいフォルダ")
try:
    folder_name.mkdir(exist_ok=False)  # フォルダを作成
    print(f"{folder_name}を作成しました。")
except FileExistsError:
    print(f"{folder_name}は既に存在します。")
except PermissionError:
    print(f"{folder_name}を作成する権限がありません。")
except OSError as e:
    print(f"エラーが発生しました: {e}")

このコードを実行すると、フォルダ作成時にエラーが発生した場合に、適切なエラーメッセージが表示されます。

フォルダ作成に失敗した場合の対処法

フォルダ作成に失敗した場合の対処法として、以下のようなアプローチがあります。

  1. エラーメッセージの表示: エラーの内容をユーザーに知らせることで、問題の特定を容易にします。
  2. リトライ機能の実装: 一時的なエラーの場合、再試行することで成功する可能性があります。
  3. ログの記録: エラーが発生した際に、ログファイルにエラー内容を記録することで、後から問題を分析できます。
  4. 代替処理の実行: フォルダ作成に失敗した場合に、別の処理を実行することで、プログラムの流れを維持します。

以下は、リトライ機能を実装した例です。

from pathlib import Path
import time
folder_name = Path("新しいフォルダ")
max_retries = 3
attempt = 0
while attempt < max_retries:
    try:
        folder_name.mkdir(exist_ok=False)  # フォルダを作成
        print(f"{folder_name}を作成しました。")
        break  # 成功したらループを抜ける
    except FileExistsError:
        print(f"{folder_name}は既に存在します。")
        break  # フォルダが存在する場合はループを抜ける
    except PermissionError:
        print(f"{folder_name}を作成する権限がありません。")
        break  # 権限エラーの場合はループを抜ける
    except OSError as e:
        print(f"エラーが発生しました: {e}. リトライします...")
        attempt += 1
        time.sleep(1)  # 1秒待ってから再試行
if attempt == max_retries:
    print("最大リトライ回数に達しました。")

このコードでは、フォルダ作成に失敗した場合に最大3回までリトライを行います。

リトライの間には1秒の待機時間を設けています。

よくある質問

フォルダが既に存在する場合はどうすればいいですか?

フォルダが既に存在する場合、exist_ok=Trueを指定してmkdir()メソッドを使用することで、エラーを発生させずに処理を続けることができます。

例えば、以下のように記述します。

folder_name.mkdir(parents=True, exist_ok=True)  # フォルダが存在してもエラーを無視

この方法を使うと、既存のフォルダがあっても新たに作成することができます。

また、存在する場合の処理を追加することも可能です。

フォルダ名に特定の文字を含めたい場合はどうすればいいですか?

フォルダ名に特定の文字を含めるには、フォルダ名を生成する際に文字列を結合することで実現できます。

例えば、フォルダ名に日付や特定のプレフィックスを追加する場合、以下のように記述します。

from datetime import datetime
# 現在の日付を取得
current_date = datetime.now().strftime("%Y%m%d")
folder_name = f"フォルダ_{current_date}"

このようにすることで、フォルダ名に特定の文字や情報を含めることができます。

連番の開始番号やステップを変更するにはどうすればいいですか?

連番の開始番号やステップを変更するには、range()関数の引数を調整します。

range(start, stop, step)の形式で指定することで、開始番号、終了番号、ステップを設定できます。

以下の例では、開始番号を5、ステップを2に設定しています。

for i in range(5, 21, 2):  # 5から20までの連番を2ずつ増加
    print(i)

このコードを実行すると、5から20までの奇数が出力されます。

これにより、連番の開始番号やステップを自由に変更することができます。

まとめ

この記事では、Pythonを使用して連番フォルダを作成する方法について詳しく解説しました。

具体的には、osモジュールやpathlibモジュールを活用したフォルダ作成の基本から、エラーハンドリングやフォルダ名のカスタマイズ、さらにはサブフォルダを含むフォルダ構造の作成方法まで幅広く取り上げました。

これらの知識を活用して、実際のプロジェクトや日常のタスクにおいて、効率的にフォルダ管理を行うことができるでしょう。

ぜひ、実際にコードを試してみて、自分のニーズに合わせたフォルダ構造を構築してみてください。

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