import os import shutil import argparse import tkinter as tk from tkinter import filedialog def organize_by_date(root_folder): for item in os.listdir(root_folder): item_path = os.path.join(root_folder, item) if not os.path.isfile(item_path): continue try: year = item[:4] month = item[5:7] except Exception: print(f"Skipping {item}, invalid format") continue year_folder = os.path.join(root_folder, year) month_folder = os.path.join(year_folder, month) os.makedirs(month_folder, exist_ok=True) dest_path = os.path.join(month_folder, item) shutil.move(item_path, dest_path) print(f"Moved {item} -> {month_folder}") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Organize files by date") parser.add_argument("--folder", help="Path to the folder to organize") parser.add_argument("--dialog", action="store_true", help="Open a folder selection dialog") args = parser.parse_args() if args.dialog: # Tkinter dialog root = tk.Tk() root.withdraw() # Hide main window folder = filedialog.askdirectory(title="Select folder to organize") if not folder: print("No folder selected, exiting.") exit(1) elif args.folder: folder = args.folder else: # Default to current working directory folder = os.getcwd() organize_by_date(folder)