Pythonでスプレッドシートのデータからフォルダを一括作成する方法

ExcelやCSVなどの表形式データに基づいてフォルダを一括作成する方法を解説する。手動でフォルダを作成する作業は時間がかかるが、Pythonを使えば自動化できる。

前提条件

以下のライブラリが必要となる:

  • pandas - 表データの読み込みに使用
  • openpyxl - Excelファイルを扱う場合に必要

インストールは以下のコマンドで実行する:

pip install pandas openpyxl

実装手順

1. データの準備

まず、フォルダ名を記載したExcelファイルを用意する。例えば「target_folders.xlsx」というファイルに「folder_name」という列を用意し、作成したいフォルダ名を記載する。

2. コードの実装

import os
import pandas as pd

def create_folders_from_excel(file_path, column_name):
    """
    Excelファイルからフォルダ名を読み込み、一括でフォルダを作成する
    
    Args:
        file_path (str): Excelファイルのパス
        column_name (str): フォルダ名が含まれる列名
    """
    # Excelファイルを読み込む
    data_frame = pd.read_excel(file_path)
    
    # 指定した列のデータを取得してフォルダを作成
    for folder_name in data_frame[column_name]:
        # 文字列を整形(前後の空白を削除)
        clean_name = str(folder_name).strip()
        
        # フォルダが存在しない場合のみ作成
        if not os.path.exists(clean_name):
            os.makedirs(clean_name)
            print(f"作成完了: {clean_name}")
        else:
            print(f"スキップ(既に存在): {clean_name}")

# 実行例
excel_file = "target_folders.xlsx"
target_column = "folder_name"
create_folders_from_excel(excel_file, target_column)

3. エラーハンドリングを追加した改良版

import os
import pandas as pd
from pathlib import Path

def batch_create_folders(file_path, column_name, base_dir="."):
    """
    Excelデータからフォルダを一括作成する(エラーハンドリング付き)
    
    Args:
        file_path (str): Excelファイルのパス
        column_name (str): フォルダ名の列名
        base_dir (str): フォルダを作成するベースディレクトリ
    """
    try:
        # データを読み込み
        df = pd.read_excel(file_path)
        
        # 列が存在するか確認
        if column_name not in df.columns:
            raise ValueError(f"列 '{column_name}' が見つかりません")
        
        success_count = 0
        error_count = 0
        
        for _, row in df.iterrows():
            name = str(row[column_name]).strip()
            
            # 無効な名前をスキップ
            if not name or name == "nan":
                continue
            
            folder_path = Path(base_dir) / name
            
            try:
                folder_path.mkdir(parents=True, exist_ok=True)
                success_count += 1
            except OSError as e:
                print(f"エラー: {name} - {e}")
                error_count += 1
        
        print(f"\n結果: 成功 {success_count}件, 失敗 {error_count}件")
        
    except FileNotFoundError:
        print(f"ファイルが見つかりません: {file_path}")
    except Exception as e:
        print(f"予期しないエラー: {e}")

# 使用例
batch_create_folders("target_folders.xlsx", "folder_name", base_dir="./output")

ポイント

  • os.makedirs()またはPath.mkdir(parents=True)を使うと、中間ディレクトリも含めて作成できる
  • exist_ok=Trueを指定すると、フォルダが既に存在してもエラーにならない
  • フォルダ名に使用できない文字(/, :, *, ?, ", <, >, | など)が含まれていないか事前にチェックすることを推奨

タグ: Python Pandas Excel OS pathlib

7月8日 22:45 投稿