Skip to content

Instantly share code, notes, and snippets.

@ItsJoshBrown
Created February 25, 2024 15:40
Show Gist options
  • Save ItsJoshBrown/2733237890e0bef9ae1da650f3acb25d to your computer and use it in GitHub Desktop.
Save ItsJoshBrown/2733237890e0bef9ae1da650f3acb25d to your computer and use it in GitHub Desktop.
A simple python script to move and organize files by similar types.
import os
import shutil
def get_file_type(file_extension):
image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.tif', '.tiff']
document_extensions = ['.txt', '.doc', '.docx', '.pdf', '.odt', '.rtf']
spreadsheet_extensions = ['.xls', '.xlsx', '.csv', '.ods']
presentation_extensions = ['.ppt', '.pptx', '.key']
audio_extensions = ['.mp3', '.wav', '.wma', '.aac', '.ogg']
video_extensions = ['.mp4', '.avi', '.mov', '.mkv', '.wmv']
code_extensions = ['.py', '.java', '.c', '.cpp', '.html', '.css', '.js', '.php', '.json']
executable_extensions = ['.exe', '.bat', '.sh']
font_extensions = ['.ttf', '.otf', '.woff', '.woff2']
archive_extensions = ['.zip', '.rar', '.tar', '.gz', '.7z']
database_extensions = ['.sqlite', '.db', '.sql']
presentation_extensions = ['.ppt', '.pptx', '.key']
if file_extension.lower() in image_extensions:
return 'Images'
elif file_extension.lower() in document_extensions:
return 'Documents'
elif file_extension.lower() in spreadsheet_extensions:
return 'Spreadsheets'
elif file_extension.lower() in presentation_extensions:
return 'Presentations'
elif file_extension.lower() in audio_extensions:
return 'Audio'
elif file_extension.lower() in video_extensions:
return 'Videos'
elif file_extension.lower() in code_extensions:
return 'Code'
elif file_extension.lower() in executable_extensions:
return 'Executables'
elif file_extension.lower() in font_extensions:
return 'Fonts'
elif file_extension.lower() in archive_extensions:
return 'Archives'
elif file_extension.lower() in database_extensions:
return 'Databases'
else:
return 'Other'
def organize_files(source_folder, destination_folder):
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
for root, dirs, files in os.walk(source_folder):
for file in files:
file_path = os.path.join(root, file)
_, file_extension = os.path.splitext(file)
if not file_extension:
continue
file_type = get_file_type(file_extension)
type_folder = os.path.join(destination_folder, file_type)
if not os.path.exists(type_folder):
os.makedirs(type_folder)
destination_path = os.path.join(type_folder, file)
shutil.move(file_path, destination_path)
print(f"Moved {file} to {type_folder}")
# Example file Path Directories
source_directory = r"C:\Downloads\Unorganized"
destination_directory = r"C:\Downloads\Organized"
organize_files(source_directory, destination_directory)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment