Skip to content

A Python app that organizes files into categorized folders based on their extensions, creates only needed folders, and safely handles duplicates by renaming them.

License

Notifications You must be signed in to change notification settings

TheCodeNoodle/file-organizer

Repository files navigation

FileOrganizer

File Organizer app in light mode File Organizer app in dark mode

A robust Python application for automated file organization that categorizes files by extension into structured directory hierarchies. Provides comprehensive support for over 300 file formats across all major media and document categories.

Overview

FileOrganizer automatically sorts files into predefined categories: Programs, Documents, Archives, Videos, Pictures, Music, and Other. The application features intelligent duplicate handling, reversible operations, and extensive format recognition including modern codecs and professional file types.

Key Features

  • Comprehensive Format Support: Recognition of 300+ file extensions including contemporary formats (AVIF, HEIC, JXL) and legacy types
  • Intelligent Directory Management: Creates category folders only when relevant files are present
  • Conflict Resolution: Automated duplicate handling with sequential numbering
  • Reversible Operations: Full undo functionality with persistent change tracking
  • Cross-Platform Compatibility: Native operation on Windows, macOS, and Linux
  • Modern Interface: Adaptive UI with system theme detection

Architecture

fileorganizer/
├── main.py          # Primary application interface and GUI components
├── organizer.py     # Core file processing logic and undo operations
├── folders.py       # Directory structure management
└── constants.py     # Comprehensive file extension mappings

System Requirements

Minimum Requirements:

  • Python 3.8 or higher (Python 3.10+ recommended)
  • 50MB available disk space
  • Cross-platform: Windows 10+, macOS 10.14+, Ubuntu 18.04+ or equivalent

Dependencies:

  • customtkinter - Modern UI framework
  • tkinter - Standard GUI toolkit
  • Standard library modules: platform, shutil, json, os, winreg

Note: System theme detection requires Windows registry access and functions optimally on Windows systems. Other platforms default to standard theming.

Installation

Automated Installation

Windows:

install_requirements.bat

Alternatively, download the standalone executable from the releases page.

Linux/macOS:

git clone https://github.com/TheCodeNoodle/file-organizer.git
cd file-organizer
chmod +x install_requirements.sh
./install_requirements.sh

Manual Installation

pip install customtkinter

Usage

Launch the application:

python main.py

The interface will automatically adapt to your system's current theme settings.

Supported File Categories

Audio Formats (30+ types)

Lossless formats (FLAC, ALAC, WAV), compressed codecs (MP3, AAC, OGG, Opus), and specialized formats including tracker modules and MIDI files.

Executable Programs (50+ types)

Platform-specific executables, installation packages, scripts, and mobile application packages across Windows, Linux, and mobile ecosystems.

Document Formats (60+ types)

Office suites, publishing formats, markup languages, e-books, and professional documentation including LaTeX, Adobe formats, and OpenDocument standards.

Archive Formats (50+ types)

Compression formats, disk images, legacy archives, and specialized containers including torrents and browser extensions.

Video Formats (40+ types)

Standard video codecs, professional cinema formats, streaming protocols, and subtitle/caption files.

Image Formats (70+ types)

Standard web formats, RAW camera files from all major manufacturers, vector graphics, professional design files, and specialized imaging formats.

Technical Implementation

File Processing Logic

  • Case-insensitive extension matching with priority-based categorization
  • Multi-extension file handling (processes final extension for compound formats)
  • Preservation of system files and existing directory structures
  • Atomic file operations with rollback capability

Safety Features

  • Pre-flight validation of target directories
  • Duplicate detection with intelligent naming conventions
  • Change logging for complete operation reversibility
  • Protection of critical system files and application components

Current Limitations

  • Extension-based categorization only (no content analysis)
  • Single-directory processing per operation
  • Theme detection limited to Windows registry
  • No custom category definitions

Development Roadmap

Planned Enhancements

  • Custom Categorization: User-defined categories and extension mappings
  • Batch Processing: Multi-directory organization operations
  • Advanced Detection: Content-based file type identification
  • Configuration Management: Persistent user preferences and settings
  • Enhanced Logging: Detailed operation logs with timestamps
  • CLI Interface: Command-line automation capabilities

Performance Improvements

  • Progress Indicators: Real-time operation status for large directories
  • Nested Organization: Sub-category creation based on file attributes
  • Preview Mode: Dry-run capability for operation validation
  • Smart Comparison: Content-based duplicate detection

Contributing

This project follows standard open-source contribution practices. Issues, feature requests, and pull requests are welcome through the GitHub repository.

Documentation

Complete documentation of supported file extensions and technical specifications is available in the project wiki and supplementary documentation files.


FileOrganizer provides enterprise-grade file management capabilities with the simplicity of a desktop application, suitable for both personal productivity and professional workflow optimization.

About

A Python app that organizes files into categorized folders based on their extensions, creates only needed folders, and safely handles duplicates by renaming them.

Resources

License

Stars

Watchers

Forks

Packages

No packages published