DEV Community

Audrey Kadjar
Audrey Kadjar

Posted on • Edited on

📷 🐍 A Python Script for organizing Desktop screenshots

Do you also take a lot of screenshots and end up with a cluttered Desktop? I've experienced that frustration many times so I ended up writing a Python script to handle the tidying up for me 👩🏻‍💻

This script automatically detects all the screenshots and pictures on the Desktop and stores them in a ✨ dedicated folder ✨


Step 1: Import modules

Let's start by importing the necessary modules: os for handling operating system interactions and shutil for file-related tasks. We'll define the organize_screenshots function to contain our script's logic.

import os
import shutil

def organize_screenshots(desktop_path, screenshots_folder):
Enter fullscreen mode Exit fullscreen mode

Step 2: Listing Desktop files

We begin by listing all files on the desktop using the listdir method, which returns a list of file names for a given path.

def organize_screenshots(desktop_path, screenshots_folder):
    desktop_files = os.listdir(desktop_path)
Enter fullscreen mode Exit fullscreen mode

Step 3: Create Screenshots Folder

Next, we create the Screenshots folder. We use os.path.join to join path components and os.makedirs to create the directory. A check ensures that the Screenshots folder is only created once.

screenshots_path = os.path.join(desktop_path, screenshots_folder)
    if not os.path.exists(screenshots_path):
        os.makedirs(screenshots_path)
Enter fullscreen mode Exit fullscreen mode

Step 4: Sorting the files

Now, comes the fun part! Let's loop through the desktop files. If a file is a screenshot or picture, we move it to the Screenshots folder using the shutil.move method with the original and destination file paths.

    for file_name in desktop_files:
        if file_name.lower().endswith(('.png', '.jpg', '.jpeg') or file_name.lower().startswith('Screen Shot')):
            file_path = os.path.join(desktop_path, file_name)
            dest_path = os.path.join(screenshots_path, file_name)

            shutil.move(file_path, dest_path)
            print(f"Moved {file_name}")
Enter fullscreen mode Exit fullscreen mode

Step 5: Bringing It All Together

Finally, let's bring everything together. We call our function with the correct paths and use the if __name__ == "__main__" construct to specify that this script is intended to be run as the main program.

import os
import shutil

def organize_screenshots(desktop_path, screenshots_folder):
    desktop_files = os.listdir(desktop_path)

    screenshots_path = os.path.join(desktop_path, screenshots_folder)
    if not os.path.exists(screenshots_path):
        os.makedirs(screenshots_path)

    for file_name in desktop_files:
        if file_name.lower().endswith(('.png', '.jpg', '.jpeg') or file_name.lower().startswith('Screen Shot')):
            file_path = os.path.join(desktop_path, file_name)
            dest_path = os.path.join(screenshots_path, file_name)

            shutil.move(file_path, dest_path)
            print(f"Moved {file_name}")

if __name__ == "__main__":
    desktop_path = "../Desktop" 
    screenshots_folder = "Screenshots"

organize_screenshots(desktop_path, screenshots_folder)
Enter fullscreen mode Exit fullscreen mode

To execute the script, open a CLI terminal and run the command (ensure that Python is installed on your operating system):

python3 <your_script_file_path>
Enter fullscreen mode Exit fullscreen mode

Congratulations! Your cluttered Desktop is now organized! 👩🏻‍💻✨ You can find the full script in my Github repo.

Feel free to reach out if you have any questions! You can also find me on Github, LinkedIn, and Instagram.

Top comments (2)

Collapse
 
ori75660 profile image
Ori Roza • Edited

great article!

Collapse
 
audreyk profile image
Audrey Kadjar

thanks @ori75660 :)