🐷

ディレクトリ構成を自動生成するPythonスクリプト作ってみた

2023/03/30に公開約2,300字

以前私が普段使っている、Pythonのディレクトリ構成について記事を書きました。
https://zenn.dev/yutabeee/articles/c53890d1bdbd56
だんだんこのフォルダとファイルを手打ちで作るのがめんどくさくなってきたので、自動で作成するスクリプトを作成したので記録しておきます。

目標とするディレクトリ構成

    project_name/
    ├── class_name.module/
    │ ├── __init__.py
    │ └── class_name.py
    │
    ├── tests/
    │ ├── __init__.py
    │ └── test_class_name.py
    │
    ├── __init__.py
    └── main.py

最終的な全体のコード

CDS.py
import os

def create_directory(dir_path):
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)

def create_file(file_path):
    if not os.path.exists(file_path):
        with open(file_path, 'w') as f:
            pass

def create_directory_structure(project_name, class_name):
    module_name = f"{class_name}.module"
    
    # ディレクトリとファイルのリスト
    dirs = [module_name, 'tests']
    files = {
        module_name: ['__init__.py', f'{class_name}.py'],
        'tests': ['__init__.py', f'test_{class_name}.py'],
        project_name: ['__init__.py', 'main.py']
    }

    # プロジェクトディレクトリの作成
    create_directory(project_name)

    # 各ディレクトリとファイルの作成
    for dir_name in dirs:
        dir_path = os.path.join(project_name, dir_name)
        create_directory(dir_path)

        for file_name in files[dir_name]:
            file_path = os.path.join(dir_path, file_name)
            create_file(file_path)

    for file_name in files[project_name]:
        file_path = os.path.join(project_name, file_name)
        create_file(file_path)

if __name__ == "__main__":
    project_name = input("プロジェクト名を入力してください: ")
    class_name = input("クラス名を入力してください: ")
    create_directory_structure(project_name, class_name)

解説

  1. import os
    ディレクトリやファイルの操作に関する関数を利用できるよう、osモジュールをインポート。

  2. create_directory
    引数で指定されたディレクトリパスが存在しない場合、そのディレクトリを作成。

  3. create_file
    引数で指定されたファイルパスが存在しない場合、そのファイルを作成。

  4. create_directory_structure
    プロジェクト名とクラス名を受け取り、以下のディレクトリ構造を作成。

  5. project_name = input("プロジェクト名を入力してください: ")
    ユーザーにプロジェクト名を入力してもらう。

  6. class_name = input("クラス名を入力してください: ")
    ユーザーにクラス名を入力してもらう。

  7. create_directory_structure(project_name, class_name)
    入力されたプロジェクト名とクラス名を使って、ディレクトリ構造を作成。

実行方法

  1. 目標のディレクトリに移動
$ cd <プロジェクト>
  1. スクリプトを実行
$ python CDS.py

このコードを実行すると、ユーザーが入力したプロジェクト名とクラス名に基づいて、目標のディレクトリ構造が自動で生成されます。これで、新しいPythonディレクトリ構造を簡単にセットアップできるようになりました。

Discussion

ログインするとコメントできます