04-18: File Organizer¶
Scans a directory and moves files into category sub-folders based on extension (Images, Videos, Audio, Documents, Code, etc.). Includes dry-run preview, conflict-safe renaming, and an undo/flatten mode.
Topics covered: pathlib.Path · shutil.move() · Path.glob() · Path.mkdir(exist_ok=True) · Path.suffix · dict mapping · functions · Path.touch()
Difficulty: ⭐⭐ Intermediate
How to Run¶
Use option 1 to create a demo folder with dummy files.
Extension Categories¶
| Folder | Extensions |
|---|---|
| Images | .jpg .png .gif .svg … |
| Documents | .pdf .docx .txt … |
| Code | .py .html .js .css … |
| Archives | .zip .rar .tar .gz … |
| Others | anything not matched |
Key Concepts Practised¶
| Concept | Where used |
|---|---|
Path.glob("*") |
List top-level files |
Path.suffix.lower() |
Get file extension |
Path.mkdir(exist_ok=True) |
Create folders on demand |
shutil.move(src, dst) |
Move files |
dict.setdefault(key, []).append() |
Group files by category |
| Conflict handling | Rename loop with _1, _2 suffix |