Python Projects

File Sorter

Universal File Sorter

This Python script automatically organizes OneDrive, Documents, and Downloads into structured folders. It’s portable, user-friendly, and works on any Windows machine.

Demonstrates: Python scripting for automation, file I/O handling, error-safe operations, and clean code design.

GitHub Repository

# [click to see full script...]

import os
import shutil
from pathlib import Path

# To detect user folders
user_home = Path.home()

# To detect OneDrive
possible_onedrives = [p for p in user_home.glob("OneDrive*") if p.is_dir()]
onedrive = possible_onedrives[0] if possible_onedrives else None
# Fixes a bug where program can't open certain onedrives

# Use OneDrive/Documents, else normal Documents dir
if onedrive and (onedrive / "Documents").exists():
    documents = onedrive / "Documents"
else:
    documents = user_home / "Documents"

# Thank you downloads for not being difficult
downloads = user_home / "Downloads"

# Main File type groups, add any you wish here only
image_ext = (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff")
doc_ext = (".doc", ".docx")
pdf_ext = (".pdf",)
spreadsheet_ext = (".xls", ".xlsx", ".csv")

# Destination folders inside Documents, change name in "" only
docs_folder = documents / "Docs"
pdfs_folder = documents / "PDFs"
sheets_folder = documents / "Spreadsheets"

# Main function
def safe_move(src, dest_folder):
    dest_folder.mkdir(parents=True, exist_ok=True)
    dest = dest_folder / src.name
    try:
        shutil.move(str(src), str(dest))
        print(f"Moved: {src.name} → {dest_folder}")
    except Exception as e:
        print(f"Skipped {src.name}: {e}")

# Prompt
print("This program will organize your OneDrive and Documents folders.")
print("• All Images → Pictures")
print("• All Docs, PDFs, and Spreadsheets → Documents\n")

user_input = input("Are you sure you want to continue? (y/n): ")

# Check value loop
while user_input != "y":
    if user_input == "n":
        exit("Goodbye")
    else:
        print("what")
        #humor
        user_input = input("I said type 'y' or 'n': ")

#  Onedrive
if onedrive:
    print(f"\n ☁︎ Sorting files in OneDrive: {onedrive}")
    for file in onedrive.glob("*"):
        if file.is_file():
            ext = file.suffix.lower()
            if ext in image_ext:
                safe_move(file, onedrive / "Pictures")
            elif ext in doc_ext:
                safe_move(file, docs_folder)
            elif ext in pdf_ext:
                safe_move(file, pdfs_folder)
            elif ext in spreadsheet_ext:
                safe_move(file, sheets_folder)

#  Documents
if documents.exists():
    print(f"\n📄 Sorting files in Documents: {documents}")
    for file in documents.glob("*"):
        if file.is_file():
            ext = file.suffix.lower()
            if ext in doc_ext:
                safe_move(file, docs_folder)
            elif ext in spreadsheet_ext:
                safe_move(file, sheets_folder)
            elif ext in pdf_ext:
                safe_move(file, pdfs_folder)
            elif ext in image_ext:
                safe_move(file, onedrive / "Pictures")

#  Downloads 
if downloads.exists():
    print(f"\n⬇️  Sorting files in Downloads: {downloads}")
    for file in downloads.glob("*"):
        if file.is_file():
            ext = file.suffix.lower()
            if ext in doc_ext:
                safe_move(file, docs_folder)
            elif ext in spreadsheet_ext:
                safe_move(file, sheets_folder)
            elif ext in pdf_ext:
                safe_move(file, pdfs_folder)
            elif ext in image_ext:
                safe_move(file, onedrive / "Pictures")
#print
print("\n✅ Sorting complete")
                                    

Text-Based Game

Text-Based Story Game

Under Construction...

GitHub Repository

# [click to see full script...]