58 – Real-World Python Projects – Smart File Rename Utility

This is a very practical automation tool used by developers, offices, photographers, YouTubers, and data teams.


πŸ“Œ What Is a Smart File Rename Utility?

A Smart File Rename Utility automatically renames files based on:

  • File type
  • Date created / modified
  • Content keywords
  • Patterns & rules
  • AI-generated names (optional)

Instead of this πŸ‘‡

IMG_20230921_143512.jpg

You get this βœ…

Wedding_Photos_2023_01.jpg

🎯 Real-World Use Cases

UserUsage
PhotographersBatch rename images
OfficesRename scanned documents
DevelopersOrganize code/log files
YouTubersRename video assets
StudentsOrganize notes
Data teamsDataset cleanup

🧠 How It Works (Logic Flow)

Select Folder
    ↓
Read Files
    ↓
Apply Naming Rules
    ↓
Preview Changes
    ↓
Rename Safely

πŸ› οΈ Tech Stack

  • Python
  • os, pathlib, datetime
  • re (regex)
  • tkinter or streamlit (UI – optional)

πŸ“ Project Structure

smart_rename/
│── rename.py
│── rules.py
│── preview.py
│── ui.py

πŸ”‘ Core Features

βœ” Batch rename
βœ” Undo rename
βœ” Rule-based naming
βœ” Date-based naming
βœ” File-type grouping
βœ” Conflict handling
βœ” Preview before rename


🧩 Step 1 β€” Read Files from Folder

import os

def get_files(folder):
    return [f for f in os.listdir(folder) if os.path.isfile(os.path.join(folder, f))]

🧩 Step 2 β€” Rule-Based Rename Logic

Example Rule:

<Project>_<Date>_<Number>.<ext>
from datetime import datetime

def generate_name(index, ext):
    date = datetime.now().strftime("%Y%m%d")
    return f"Project_{date}_{index}{ext}"

🧩 Step 3 β€” Rename Files Safely

import os

def rename_files(folder):
    files = get_files(folder)
    for i, file in enumerate(files, start=1):
        name, ext = os.path.splitext(file)
        new_name = generate_name(i, ext)
        os.rename(
            os.path.join(folder, file),
            os.path.join(folder, new_name)
        )

πŸ‘€ Step 4 β€” Preview Before Rename (Important)

def preview(folder):
    files = get_files(folder)
    for i, file in enumerate(files, start=1):
        name, ext = os.path.splitext(file)
        print(file, "β†’", generate_name(i, ext))

↩️ Step 5 β€” Undo Feature (Pro Level)

history = {}

def rename_with_undo(folder):
    files = get_files(folder)
    for i, file in enumerate(files):
        new = generate_name(i+1, os.path.splitext(file)[1])
        history[new] = file
        os.rename(file, new)

def undo():
    for new, old in history.items():
        os.rename(new, old)

🧠 Smart Features (Advanced)

πŸ“… Date-Based Rename

Invoice_2024_09.pdf

πŸ”’ Auto Numbering

Report_001.txt

πŸ”  Case Conversion

my file.txt β†’ MY_FILE.txt

🧾 Regex Cleanup

import re
clean = re.sub(r"[^a-zA-Z0-9_]", "", filename)

πŸ–₯️ Optional GUI (Tkinter)

from tkinter import filedialog

folder = filedialog.askdirectory()
preview(folder)

πŸ€– AI-Powered Rename (Optional)

Rename based on content (PDF / text):

def ai_name(content):
    return "Meeting_Notes"

⚠️ Safety Best Practices

βœ” Always preview
βœ” Dry-run mode
βœ” Skip existing filenames
βœ” Logging changes
βœ” Undo support


πŸ“ˆ Resume-Ready Description

β€œDeveloped a Smart File Rename Utility in Python supporting batch processing, rule-based naming, preview and undo functionality, helping users organize files efficiently.”


🧠 Skills You Learn

βœ” Python Automation
βœ” File Handling
βœ” Regex
βœ” UI Integration
βœ” Real-World Tool Design


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *