Yapay zeka destekli kod düzenleme veya analiz işlemlerinde, proje dosyalarının tamamını yapay zekaya aktarmak gerekebilir. Ancak birden fazla dosya ve klasör yapısına sahip projelerde bu işlem oldukça zahmetli hale gelir.
İşte bu noktada bu Python script imdadınıza yetişiyor. 👇

🚀 Ne işe yarar?


Bu script, belirlediğiniz bir proje klasörü içindeki tüm .py dosyalarını otomatik olarak tarar, okur ve tek bir metin dosyasında birleştirir.
Her dosya, hem dosya yolu hem de adı belirtilerek Python kod bloğu biçiminde düzenlenir.
Bu sayede yapay zekaya proje yapısını ve dosyaları tek bir dosya üzerinden aktarmanız mümkün hale gelir.

⚙️ Özellikleri

  • 📂 Alt klasörlerdeki tüm .py dosyalarını otomatik tarar.
  • 🚫 venv, __pycache__, test, doc gibi klasörleri hariç tutar.
  • 💾 Çıktı olarak tek bir backup.txt dosyası oluşturur.
  • 🧩 Her dosya için yapay zeka dostu açıklama satırları ve Python kod bloğu biçimlendirmesi ekler.
  • 🛠️ Hatalı veya okunamayan dosyalarda işlemi durdurmadan devam eder.

🔧 Kullanım

  1. Script dosyasını projenizin kök klasörüne yerleştirin.
  2. Terminal veya komut satırında aşağıdaki komutu çalıştırın:
    > python script_adi.py
  3. Aynı klasörde backup.txt adlı bir dosya oluşacaktır.
  4. Bu dosya içeriğini yapay zekaya (örneğin ChatGPT, Claude, Copilot, vb.) aktararak projenizin tamamını analiz ettirebilir, düzenletebilir veya belge oluşturabilirsiniz.

🧩 Örnek Kullanım Senaryosu


“Proje kodlarımı yapay zekaya aktararak, fonksiyon açıklamaları, kod iyileştirmeleri veya belgeleme işlemleri yaptırmak istiyorum.”
Bu script, tüm kodları tek dosyada topladığı için yapay zekanın proje yapısını anlamasını kolaylaştırır.

📘 Notlar ve Öneriler

  • Script’teki EXCLUDE_LIST değişkenini düzenleyerek hariç tutulacak klasör ve dosyaları özelleştirebilirsiniz.
  • BACKUP_FILES listesine birden fazla çıktı dosyası tanımlayarak farklı yedeklemeler oluşturabilirsiniz.
  • İsterseniz .js, .html, .php gibi diğer uzantıları da benzer şekilde ekleyip genişletebilirsiniz.

📄 Örnek Çıktı Görünümü


Aşağıda backup.txt dosyasının içeriğinin nasıl görüneceğine dair bir örnek verilmiştir 👇

# -----------------------------
# Path: main.py
# File: main.py
```python
import os

def hello():
     print("Merhaba Dünya!")
```

# -----------------------------
# Path: src/app.py
# File: app.py
```python
import sys
import signal
class App:
     pass
```



Bu yapı sayesinde her dosya açık bir şekilde etiketlenir ve yapay zekaya kolayca aktarılabilir.
Kodun nereden geldiğini (dosya yolu ve adıyla birlikte) anlamak hem insan hem de yapay zeka açısından çok daha kolay hale gelir.
Cursor gibi kod düzenleme proje geliştirme yapay zeka editörlerinde oldukça işe yarıyor. promt başında önce scripti çalıştırıyorum ve @backup.txt şeklinde dosyayı sürükle bırak ile etiketliyorum.
büyük projelerde sorunlar olabilir.
Python Kodları:
import os
# Source folder (can be a single folder path)
SOURCE_FOLDER = "."
# List of output files
BACKUP_FILES = []  # Add output file names here if needed
# Current script file name to exclude from backup
CURRENT_SCRIPT = os.path.basename(__file__)
# List of folders or file names to exclude from backup
EXCLUDE_LIST = [CURRENT_SCRIPT, "venv", "__pycache__","test","doc"]  # Add folder names or file names to exclude
# Backup process with AI note generation
# This function reads all .py files in the source folder (and subfolders),
# and writes their relative paths, file names, and content to a single document.
# Each file is wrapped with Python code block style for AI prompts and easier reading.
def backup_python_files_in_folder(source_folder, target_file, exclude_list=None):
    if exclude_list is None:
        exclude_list = []
    with open(target_file, "w", encoding="utf-8") as backup:
        for root, dirs, files in os.walk(source_folder):  # Walk through folder and subfolders
            # Remove excluded directories from traversal
            dirs[:] = [d for d in dirs if d not in exclude_list]
            for file in files:
                if file.endswith(".py") and file not in exclude_list:
                    full_path = os.path.join(root, file)
                    try:
                        with open(full_path, "r", encoding="utf-8") as f:
                            content = f.read()
                    except Exception as e:
                        print(f"[ERROR] Could not read {full_path}: {e}")
                        continue  # Skip to next file
                    # Compute project-relative path
                    if source_folder == ".":
                        relative_path = os.path.relpath(full_path, start=os.getcwd())  # Start from current working directory
                    else:
                        relative_path = os.path.relpath(full_path, start=source_folder)
                    # Write relative path, file name, and content in AI-friendly format
                    backup.write(f"# -----------------------------\n")
                    backup.write(f"# Path: {relative_path}\n")
                    backup.write(f"# File: {file}\n")
                    backup.write("```python\n")
                    backup.write(content)
                    backup.write("\n```\n\n")
    print(f"Backup completed. Output file: {target_file}")
# Run
if __name__ == "__main__":
    if not BACKUP_FILES:
        # If BACKUP_FILES is empty, scan the source folder and process files into a default backup
        default_backup_file = "backup.txt"
        backup_python_files_in_folder(SOURCE_FOLDER, default_backup_file, EXCLUDE_LIST)
    else:
        for bf in BACKUP_FILES:
            backup_python_files_in_folder(SOURCE_FOLDER, bf, EXCLUDE_LIST)