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
| User | Usage |
|---|---|
| Photographers | Batch rename images |
| Offices | Rename scanned documents |
| Developers | Organize code/log files |
| YouTubers | Rename video assets |
| Students | Organize notes |
| Data teams | Dataset cleanup |
π§ How It Works (Logic Flow)
Select Folder
β
Read Files
β
Apply Naming Rules
β
Preview Changes
β
Rename Safely
π οΈ Tech Stack
- Python
os,pathlib,datetimere(regex)tkinterorstreamlit(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

Leave a Reply