Skip to content

About

A Python CLI application that automates file organization, bulk renaming, folder cleanup, statistics generation, CSV export, and operation logging.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

ย 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ Smart File Automation & Organizer

A powerful command-line Python application that automates common file management tasks โ€” organize files by type, bulk-rename, clean empty folders, and generate detailed statistics with full operation logging.

Python License Platform Status


๐Ÿ“‹ Table of Contents


โœจ Features

# Feature Description
1 ๐Ÿ—‚ Organize Files Automatically sort files into categorized folders (Images, Documents, Videos, Music, Archives, Programs, Others) based on file extension
2 โœ๏ธ Bulk Rename Rename all files in a folder with a custom prefix and sequential numbering (Report_001.pdf, Report_002.docx, โ€ฆ)
3 ๐Ÿ—‘ Delete Empty Folders Recursively scan and remove empty sub-directories
4 ๐Ÿ“Š Folder Statistics Display total files, folders, category breakdown, total size, and largest / smallest files
5 ๐Ÿ“‹ Operation Log View timestamped logs of every action performed
6 ๐Ÿ“ค Export to CSV Export folder statistics to a CSV report

๐ŸŽ Bonus Features

  • ๐ŸŽจ Colorized terminal output โ€” ANSI escape codes with zero external dependencies
  • ๐Ÿ“Š Progress bar โ€” animated [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘] 65.0% for long operations
  • ๐Ÿ›ก Duplicate handling โ€” auto-suffixes filenames to prevent overwrites
  • ๐Ÿ“ค CSV export โ€” timestamped statistical reports
  • ๐Ÿ”ง Centralized configuration โ€” all extension categories in config.py for easy customization

๐Ÿ›  Technologies Used

Technology Purpose
Python 3.10+ Core language
os File / directory operations (listdir, walk, rename, rmdir, makedirs, path)
shutil Moving files across directories
logging Persistent operation logging to logs/operations.log
csv Statistics export
sys Terminal control (progress bar rendering)
datetime Timestamped CSV filenames

No external dependencies required. The project uses only the Python standard library.


๐Ÿ“ฆ Installation

# 1. Clone the repository
git clone https://github.com/your-username/Smart-File-Automation-Organizer.git
cd Smart-File-Automation-Organizer

# 2. (Optional) Create a virtual environment
python -m venv venv
source venv/bin/activate        # macOS / Linux
venv\Scripts\activate           # Windows

# 3. Install dependencies (none required โ€” standard library only)
pip install -r requirements.txt

Requirements

  • Python 3.10 or higher
  • No third-party packages needed

๐Ÿš€ How to Run

python main.py

You'll see an interactive menu:

  โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
  โ•‘                                              โ•‘
  โ•‘     ๐Ÿ“  SMART  FILE  ORGANIZER  ๐Ÿ“          โ•‘
  โ•‘         v1.0.0                               โ•‘
  โ•‘                                              โ•‘
  โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

    MAIN MENU
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

    1.  ๐Ÿ—‚  Organize Files by Extension
    2.  โœ๏ธ  Rename Multiple Files
    3.  ๐Ÿ—‘  Delete Empty Folders
    4.  ๐Ÿ“Š  Display Folder Statistics
    5.  ๐Ÿ“‹  View Operation Log
    6.  ๐Ÿ“ค  Export Statistics to CSV
    0.  ๐Ÿšช  Exit

  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  ๐Ÿ‘‰ Choose an option:

๐Ÿ“‚ Project Structure

Smart-File-Automation-Organizer/
โ”‚
โ”œโ”€โ”€ main.py              # Entry point โ€” CLI menu & dispatch
โ”œโ”€โ”€ config.py            # Extension mappings, colours, constants
โ”œโ”€โ”€ organizer.py         # Feature 1: Organize files by extension
โ”œโ”€โ”€ renamer.py           # Feature 2: Bulk rename files
โ”œโ”€โ”€ cleaner.py           # Feature 3: Delete empty folders
โ”œโ”€โ”€ statistics.py        # Feature 4: Folder statistics & CSV export
โ”œโ”€โ”€ logger.py            # Logging setup (logs/operations.log)
โ”œโ”€โ”€ utils.py             # Shared helpers (validation, progress bar)
โ”‚
โ”œโ”€โ”€ requirements.txt     # Dependencies (standard library only)
โ”œโ”€โ”€ README.md            # This file
โ”œโ”€โ”€ LICENSE              # MIT License
โ”œโ”€โ”€ .gitignore           # Git ignore rules
โ”‚
โ”œโ”€โ”€ logs/                # Auto-created operation logs
โ”‚   โ””โ”€โ”€ operations.log
โ”‚
โ”œโ”€โ”€ sample_folder/       # Test files for quick demo
โ”‚   โ”œโ”€โ”€ photo1.jpg
โ”‚   โ”œโ”€โ”€ wallpaper.png
โ”‚   โ”œโ”€โ”€ resume.pdf
โ”‚   โ”œโ”€โ”€ notes.txt
โ”‚   โ”œโ”€โ”€ spreadsheet.xlsx
โ”‚   โ”œโ”€โ”€ data.csv
โ”‚   โ”œโ”€โ”€ movie.mp4
โ”‚   โ”œโ”€โ”€ song.mp3
โ”‚   โ””โ”€โ”€ archive.zip
โ”‚
โ””โ”€โ”€ screenshots/         # Screenshots for documentation

๐Ÿ“– Sample Input / Output

Feature 1 โ€” Organize Files by Extension

Input:

๐Ÿ“‚ Enter the folder to organize: ./sample_folder
Organize files in './sample_folder'? [y/N]: y

Before:

sample_folder/
โ”œโ”€โ”€ photo1.jpg
โ”œโ”€โ”€ wallpaper.png
โ”œโ”€โ”€ resume.pdf
โ”œโ”€โ”€ notes.txt
โ”œโ”€โ”€ spreadsheet.xlsx
โ”œโ”€โ”€ data.csv
โ”œโ”€โ”€ movie.mp4
โ”œโ”€โ”€ song.mp3
โ””โ”€โ”€ archive.zip

Output:

โ„น Found 9 file(s). Organizingโ€ฆ

  [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 100.0%

โœ” 9 file(s) organized successfully.

After:

sample_folder/
โ”œโ”€โ”€ Images/
โ”‚   โ”œโ”€โ”€ photo1.jpg
โ”‚   โ””โ”€โ”€ wallpaper.png
โ”œโ”€โ”€ Documents/
โ”‚   โ”œโ”€โ”€ resume.pdf
โ”‚   โ”œโ”€โ”€ notes.txt
โ”‚   โ”œโ”€โ”€ spreadsheet.xlsx
โ”‚   โ””โ”€โ”€ data.csv
โ”œโ”€โ”€ Videos/
โ”‚   โ””โ”€โ”€ movie.mp4
โ”œโ”€โ”€ Music/
โ”‚   โ””โ”€โ”€ song.mp3
โ”œโ”€โ”€ Archives/
โ”‚   โ””โ”€โ”€ archive.zip
โ”œโ”€โ”€ Programs/
โ””โ”€โ”€ Others/

Feature 2 โ€” Bulk Rename

Input:

๐Ÿ“‚ Enter the folder containing files to rename: ./Documents
๐Ÿท  Enter new filename prefix: Project
Rename all files in './Documents' with prefix 'Project'? [y/N]: y

Before:

Documents/
โ”œโ”€โ”€ resume.pdf
โ”œโ”€โ”€ notes.txt
โ”œโ”€โ”€ spreadsheet.xlsx
โ””โ”€โ”€ data.csv

Output:

โ„น Renaming 4 file(s)โ€ฆ

  [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] 100.0%

โœ” 4 file(s) renamed successfully.

After:

Documents/
โ”œโ”€โ”€ Project_001.csv
โ”œโ”€โ”€ Project_002.pdf
โ”œโ”€โ”€ Project_003.txt
โ””โ”€โ”€ Project_004.xlsx

Feature 3 โ€” Delete Empty Folders

Input:

๐Ÿ“‚ Enter the root folder to scan: ./TestFolder
Delete all empty sub-folders inside './TestFolder'? [y/N]: y

Folder structure before:

TestFolder/
โ”œโ”€โ”€ Old/           (empty)
โ”œโ”€โ”€ Backup/        (empty)
โ”œโ”€โ”€ Reports/
โ”‚   โ””โ”€โ”€ Q1.pdf
โ”œโ”€โ”€ Empty1/        (empty)
โ””โ”€โ”€ Empty2/        (empty)

Output:

  ๐Ÿ—‘  Removed: TestFolder/Old
  ๐Ÿ—‘  Removed: TestFolder/Backup
  ๐Ÿ—‘  Removed: TestFolder/Empty1
  ๐Ÿ—‘  Removed: TestFolder/Empty2

โœ” 4 empty folder(s) deleted.

Feature 4 โ€” Folder Statistics

Input:

๐Ÿ“‚ Enter the folder to analyse: ./ProjectFiles

Output:

    ๐Ÿ“ Total Files       35
    ๐Ÿ“‚ Total Folders     12

    ๐Ÿ–ผ  Images           8
    ๐Ÿ“„ Documents         14
    ๐ŸŽฌ Videos            5
    ๐ŸŽต Music             4
    ๐Ÿ“ฆ Archives          2
    โš™  Programs          0
    ๐Ÿ“Ž Others            2

    ๐Ÿ’พ Total Size        452.38 MB
    ๐Ÿ”บ Largest File      presentation.mp4 (198.50 MB)
    ๐Ÿ”ป Smallest File     notes.txt (45 B)

Feature 5 โ€” Operation Log

Output (color-coded in terminal):

    2026-07-01 18:32:15 | INFO     | SESSION | Application started (v1.0.0)
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Started โ€” target: C:\sample_folder
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Moved 'photo1.jpg' โ†’ Images/
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Moved 'resume.pdf' โ†’ Documents/
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Moved 'movie.mp4' โ†’ Videos/
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Moved 'song.mp3' โ†’ Music/
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Moved 'archive.zip' โ†’ Archives/
    2026-07-01 18:32:18 | INFO     | ORGANIZE | Completed โ€” 9 file(s) moved
    2026-07-01 18:33:01 | INFO     | RENAME | Started โ€” folder: C:\Documents, prefix: 'Project'
    2026-07-01 18:33:01 | INFO     | RENAME | 'resume.pdf' โ†’ 'Project_001.pdf'
    2026-07-01 18:33:01 | INFO     | RENAME | 'notes.txt' โ†’ 'Project_002.txt'
    2026-07-01 18:33:01 | INFO     | RENAME | Completed โ€” 4 file(s) renamed
    2026-07-01 18:34:12 | INFO     | CLEAN | Started โ€” target: C:\TestFolder
    2026-07-01 18:34:12 | INFO     | CLEAN | Deleted empty folder: C:\TestFolder\Old
    2026-07-01 18:34:12 | INFO     | CLEAN | Completed โ€” 4 folder(s) deleted
    2026-07-01 18:35:00 | INFO     | STATS | Completed โ€” 35 files, 12 folders, 452.38 MB total

Feature 6 โ€” CSV Export

Output:

โœ” Statistics exported to ./ProjectFiles/folder_stats_20260701_183500.csv

Generated CSV contents:

Metric Value
Total Files 35
Total Folders 12
Total Size (bytes) 474439680
Largest File presentation.mp4
Smallest File notes.txt
Category Count
Archives 2
Documents 14
Images 8
Music 4
Others 2
Videos 5

๐Ÿ“ธ Screenshots

1. Main Menu

Main Menu

2. Organize Files

Organize Result

3. Bulk Rename

Bulk Rename Result

4. Delete Empty Folders

Delete Empty Folders

5. Folder Statistics

Folder Statistics

6. Operation Log

Operation Log

7. CSV Export

CSV Export

8. Project Structure

Project Structure

9. GitHub Repository

GitHub Repository


๐Ÿ”ฎ Future Improvements

  • Undo last operation โ€” maintain a journal to reverse the most recent action
  • Configuration file โ€” YAML/JSON config for custom extension categories
  • Scheduled automation โ€” watch a folder and auto-organize on file arrival
  • GUI version โ€” Tkinter or web-based interface
  • Dry-run mode โ€” preview changes without moving/renaming files
  • Multi-language support โ€” i18n for menu strings
  • Search functionality โ€” find files by name, size, or date across directories

๐Ÿ“„ License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


๐Ÿ™Œ Acknowledgements

Built as an internship-level project demonstrating proficiency in:

  • Python os module & file system operations
  • Exception handling & defensive programming
  • The logging standard library module
  • Modular, PEP 8-compliant code architecture
  • CLI user experience design

Made with โค๏ธ in Python

About

A Python CLI application that automates file organization, bulk renaming, folder cleanup, statistics generation, CSV export, and operation logging.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages