Folder Trees Generator - a Simple Python Script to Generate Folder Trees in TXT file.
by Friedx - Thursday December 19, 2024 at 06:40 AM
#1
Hi everyone! 

I’ve built a tool called Folder Tree Generator by Friedx , which lets you easily generate and export folder structures as text files. It’s perfect for organizing, documenting, or analyzing directory hierarchies. 

Features:
- Generate a folder tree for any directory. 
- Preview the folder structure in the app. 
- Export the structure as a `.txt` file. 

import os
import tkinter as tk
from tkinter import filedialog, messagebox, ttk

def generate_folder_tree(path, depth=None, exclude=None):
    exclude = exclude or []
    tree_lines = []

    def walk_dir(dir_path, prefix="", level=0):
        if depth is not None and level > depth:
            return

        try:
            entries = sorted(os.listdir(dir_path))
        except PermissionError:
            return

        for i, entry in enumerate(entries):
            if entry in exclude:
                continue

            full_path = os.path.join(dir_path, entry)
            connector = "\u251c\u2500\u2500 " if i < len(entries) - 1 else "\u2514\u2500\u2500 "
            tree_lines.append(f"{prefix}{connector}{entry}")

            if os.path.isdir(full_path):
                extension = "\u2502  " if i < len(entries) - 1 else "    "
                walk_dir(full_path, prefix + extension, level + 1)

    tree_lines.append(path)
    walk_dir(path)
    return "\n".join(tree_lines)

def save_tree_to_file(tree, folder_name, save_location):
    file_path = os.path.join(save_location, f"{folder_name}.txt")
    with open(file_path, "w", encoding="utf-8") as file:
        file.write(tree)

def browse_folder():
    folder_path = filedialog.askdirectory(title="Select Folder")
    if folder_path:
        folder_path_var.set(folder_path)
        preview_folder_tree()

def choose_save_location():
    save_location = filedialog.askdirectory(title="Select Save Location")
    if save_location:
        save_location_var.set(save_location)

def preview_folder_tree():
    folder_path = folder_path_var.get()
    if folder_path:
        try:
            tree = generate_folder_tree(folder_path)
            preview_text.delete(1.0, tk.END)
            preview_text.insert(tk.END, tree)
        except Exception as e:
            messagebox.showerror("Error", f"An error occurred: {e}")

def export_tree():
    folder_path = folder_path_var.get()
    save_location = save_location_var.get()

    if not folder_path:
        messagebox.showwarning("Warning", "Please select a folder.")
        return

    if not save_location:
        messagebox.showwarning("Warning", "Please select a save location.")
        return

    try:
        folder_name = os.path.basename(folder_path)
        tree = generate_folder_tree(folder_path)
        save_tree_to_file(tree, folder_name, save_location)
        messagebox.showinfo("Success", f"Folder tree exported to {save_location}")
    except Exception as e:
        messagebox.showerror("Error", f"An error occurred: {e}")

# Main application window
root = tk.Tk()
root.title("Folder Tree Generator by Friedx")

# Variables
folder_path_var = tk.StringVar()
save_location_var = tk.StringVar()

# Interface elements
frame = ttk.Frame(root, padding="10")
frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))

folder_label = ttk.Label(frame, text="Folder:")
folder_label.grid(row=0, column=0, sticky=tk.W)
folder_entry = ttk.Entry(frame, textvariable=folder_path_var, width=50)
folder_entry.grid(row=0, column=1, sticky=(tk.W, tk.E))
folder_button = ttk.Button(frame, text="Browse...", command=browse_folder)
folder_button.grid(row=0, column=2, sticky=tk.E)

save_label = ttk.Label(frame, text="Save Location:")
save_label.grid(row=1, column=0, sticky=tk.W)
save_entry = ttk.Entry(frame, textvariable=save_location_var, width=50)
save_entry.grid(row=1, column=1, sticky=(tk.W, tk.E))
save_button = ttk.Button(frame, text="Browse...", command=choose_save_location)
save_button.grid(row=1, column=2, sticky=tk.E)

preview_label = ttk.Label(frame, text="Preview:")
preview_label.grid(row=2, column=0, sticky=tk.W)
preview_text = tk.Text(frame, height=20, width=80)
preview_text.grid(row=3, column=0, columnspan=3, pady=10)

export_button = ttk.Button(frame, text="Export Tree", command=export_tree)
export_button.grid(row=4, column=0, columnspan=3, pady=10)

# Configure resizing
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
frame.columnconfigure(1, weight=1)

root.mainloop()



Libraries Used:
- `os` (built-in) 
- `tkinter` (built-in) 
- `ttk` (built-in) 

No external dependencies! 

How to Use:
1. Ensure Python 3.x is installed
2. Save the script with the name folder_tree_generator_by_friedx.py
3. Run the script with: 

python folder_tree_generator_by_friedx.py


4. Use the GUI to select a folder and export the tree! 


Virustotal Score
https://www.virustotal.com/gui/file-analysis/ZDY2YzEwYzNkOTcxYTdiM2I0ZmRmMDNlYWFiZTkxNmY6MTczNDU5MDMxNg==

Let me know your feedback or suggestions! 
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  ⭐ [Python] Seed Phrase Parser from stealer logs - Source code ⭐ SeedHunter 35 1,786 08-05-2025, 05:24 PM
Last Post: lildrainer
  Mullvad script automator DomadordePombo 9 561 08-01-2025, 06:42 PM
Last Post: CyclopsArmy23
  Mullvad Account Checker 2025 [PYTHON] Dimitry 39 1,359 08-01-2025, 03:13 PM
Last Post: ylh440105
  Python based Stealer Logs Parser Loki 85 5,752 07-29-2025, 02:16 PM
Last Post: brasov24
  ⭐⭐ Saudi ID No Generator Script who 14 1,952 07-28-2025, 03:57 PM
Last Post: 0xruw

Forum Jump:


 Users browsing this thread: 1 Guest(s)