0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIとのコード共有を劇的に簡単に!複数ファイルを1つにまとめるPythonスクリプト

Last updated at Posted at 2024-10-19

AIとの共有を簡単にする!複数のPythonファイルを1つにまとめるスクリプト

はじめに

AIに相談する際、複数のPythonファイルを共有するのが面倒だと感じたことはありませんか?ZIPファイルのアップロードができない場合、一つ一つファイルを共有するのは大変です。そこで、複数のファイルを1つのテキストファイルにまとめるスクリプトを作成しました。(Claudeがw)

このスクリプトを使えば、プロジェクトフォルダ内の全てのPythonファイル(および他の指定した拡張子のファイル)を1つのテキストファイルにまとめることができます。これにより、AIとのコード共有がより簡単になります。

スクリプトの機能

  • 指定した拡張子(デフォルトは.py、.html、.css、.js)のファイルを収集
  • サブディレクトリも含めて再帰的にファイルを探索
  • 各ファイルの絶対パスと中身を出力
  • 日本語のファイル対応

スクリプトのコード

import os
import codecs

# 収集するファイルの拡張子リスト
TARGET_EXTENSIONS = ['.py', '.html', '.css', '.js']

# 除外するディレクトリのリスト
EXCLUDE_DIRS = ['__pycache__', 'venv']

def collect_files(root_dir):
    collected_files = []
    for root, dirs, files in os.walk(root_dir):
        # 除外するディレクトリを dirs から削除して走査対象から外す
        dirs[:] = [d for d in dirs if d not in EXCLUDE_DIRS]
        
        for file in files:
            if any(file.endswith(ext) for ext in TARGET_EXTENSIONS):
                collected_files.append(os.path.join(root, file))
    return collected_files

def read_file_content(file_path):
    with codecs.open(file_path, 'r', encoding='utf-8') as file:
        return file.read()

def write_output(collected_files, output_file):
    with codecs.open(output_file, 'w', encoding='utf-8') as out_file:
        for file_path in collected_files:
            out_file.write(f"<ファイルパス>{file_path}</ファイルパス>\n")
            out_file.write("<ファイル中身>\n")
            out_file.write(read_file_content(file_path))
            out_file.write("\n</ファイル中身>\n\n")

def main():
    root_directory = os.getcwd()  # 現在のディレクトリを使用
    output_file = "現在の開発状況.txt"
    
    collected_files = collect_files(root_directory)
    write_output(collected_files, output_file)
    
    print(f"{len(collected_files)}個のファイルが{output_file}にまとめられました。")

if __name__ == "__main__":
    main()

スクリプトの解説

  1. 拡張子の指定: TARGET_EXTENSIONSリストで収集するファイルの拡張子を指定します。必要に応じて簡単に拡張子を追加できます。

  2. ファイルの収集: collect_files関数が、指定されたディレクトリとそのサブディレクトリを再帰的に探索し、対象の拡張子を持つファイルを収集します。

  3. ファイル内容の読み取り: read_file_content関数が、UTF-8エンコーディングを使用してファイルの内容を読み取ります。これにより、日本語を含むファイルも正しく処理されます。

  4. 出力ファイルの作成: write_output関数が、収集したファイルの情報を指定されたフォーマットで出力ファイルに書き込みます。

  5. メイン処理: main関数がスクリプトの実行フローを制御します。現在のディレクトリを起点として処理を開始し、結果を「現在の開発状況.txt」ファイルに出力します。

使い方

  1. このスクリプトを .py ファイルとして保存します(例:file_collector.py)。

  2. コマンドラインで、スクリプトを実行したいディレクトリに移動します。

  3. 以下のコマンドを実行します:

    python file_collector.py
    
  4. スクリプトが実行され、「現在の開発状況.txt」ファイルが作成されます。

カスタマイズ

  • 異なる拡張子のファイルを収集したい場合は、TARGET_EXTENSIONSリストを編集します。
  • 出力ファイル名を変更したい場合は、main関数内のoutput_file変数を編集します。

まとめ

このスクリプトを使用することで、AIとのコード共有がより簡単になります。複数のファイルを1つのテキストファイルにまとめることで、プロジェクトの全体像を簡単に共有できます。また、このスクリプトは拡張性が高いので、自分のニーズに合わせてカスタマイズすることも可能です。

プログラミングの効率化に少しでも役立てば幸いです。皆さんのプロジェクトでも、ぜひ活用してみてください!

Claude作成のさばめろん修正

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?