<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Imran Ahmad</title>
    <description>The latest articles on DEV Community by Imran Ahmad (@imranc07).</description>
    <link>https://dev.to/imranc07</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1821493%2F8eecaad7-0f2a-42c9-9423-ee45892676e3.gif</url>
      <title>DEV Community: Imran Ahmad</title>
      <link>https://dev.to/imranc07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/imranc07"/>
    <language>en</language>
    <item>
      <title>📂 Automating File Organization with Python 🚀</title>
      <dc:creator>Imran Ahmad</dc:creator>
      <pubDate>Mon, 08 Sep 2025 19:54:19 +0000</pubDate>
      <link>https://dev.to/imranc07/automating-file-organization-with-python-4n2o</link>
      <guid>https://dev.to/imranc07/automating-file-organization-with-python-4n2o</guid>
      <description>&lt;p&gt;Managing a cluttered Downloads folder is a struggle we all face. Images, documents, videos, executables, and random files pile up quickly, making it difficult to find what you need. That’s where &lt;strong&gt;Python automation&lt;/strong&gt; comes to the rescue!&lt;/p&gt;

&lt;p&gt;In this blog, I’ll walk you through how I built a &lt;strong&gt;Python File Organizer Script&lt;/strong&gt; that automatically sorts files into categorized subfolders like Images, Documents, Videos, Audio, Archives, Config, and more.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Problem Statement
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a Python script that automatically organizes files in a folder by file type — putting images, documents, videos, etc., into separate subfolders.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🚀 Features of the Script
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Automatically detects file types by extension&lt;/li&gt;
&lt;li&gt;✅ Creates subfolders if they don’t exist&lt;/li&gt;
&lt;li&gt;✅ Moves files into respective folders&lt;/li&gt;
&lt;li&gt;✅ Prints logs for confirmation (moved / skipped files)&lt;/li&gt;
&lt;li&gt;✅ Easy to customize with new extensions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Supported File Types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Images&lt;/strong&gt; → &lt;code&gt;.jpg&lt;/code&gt;, &lt;code&gt;.jpeg&lt;/code&gt;, &lt;code&gt;.png&lt;/code&gt;, &lt;code&gt;.gif&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documents&lt;/strong&gt; → &lt;code&gt;.pdf&lt;/code&gt;, &lt;code&gt;.docx&lt;/code&gt;, &lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.xlsx&lt;/code&gt;, &lt;code&gt;.pptx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Videos&lt;/strong&gt; → &lt;code&gt;.mp4&lt;/code&gt;, &lt;code&gt;.avi&lt;/code&gt;, &lt;code&gt;.mkv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio&lt;/strong&gt; → &lt;code&gt;.mp3&lt;/code&gt;, &lt;code&gt;.wav&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archives&lt;/strong&gt; → &lt;code&gt;.zip&lt;/code&gt;, &lt;code&gt;.rar&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scripts&lt;/strong&gt; → &lt;code&gt;.py&lt;/code&gt;, &lt;code&gt;.js&lt;/code&gt;, &lt;code&gt;.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config&lt;/strong&gt; → &lt;code&gt;.ini&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Applications&lt;/strong&gt; → &lt;code&gt;.exe&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📜 Python Code
&lt;/h2&gt;

&lt;p&gt;Here’s the complete script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;shutil&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;organize_folder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# Define file type categories
&lt;/span&gt;    &lt;span class="n"&gt;file_types&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Images&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.jpg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.jpeg&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.png&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.gif&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Documents&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.pdf&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.docx&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.txt&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.xlsx&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.pptx&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Videos&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.mp4&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.avi&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.mkv&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Audio&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.mp3&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.wav&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Archives&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.zip&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.rar&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Scripts&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.py&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.js&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.md&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Config&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.ini&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Applications&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.exe&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;📂 Organizing files in: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;files_moved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;filename&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;file_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splitext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;moved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extensions&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;file_types&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;extensions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="n"&gt;target_folder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;folder_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;folder&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makedirs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target_folder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exist_ok&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;shutil&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;move&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target_folder&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✅ Moved: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; → &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;folder&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                    &lt;span class="n"&gt;files_moved&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                    &lt;span class="n"&gt;moved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
                    &lt;span class="k"&gt;break&lt;/span&gt;

            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;moved&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;⚠️ Skipped (Unknown type): &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;✨ Done! Total files moved: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;files_moved&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Run the script
&lt;/span&gt;&lt;span class="nf"&gt;organize_folder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C:\\Users\\imran\\Downloads&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📸 Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📂 Organizing files in: C:\Users\imran\Downloads

✅ Moved: photo.jpg → Images/
✅ Moved: resume.docx → Documents/
✅ Moved: movie.mp4 → Videos/
⚠️ Skipped (Unknown type): setup.tmp

✨ Done! Total files moved: 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 Why This Script is Useful?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keeps your Downloads folder neat and tidy&lt;/li&gt;
&lt;li&gt;Saves time searching for files&lt;/li&gt;
&lt;li&gt;Boosts productivity with &lt;strong&gt;automation&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Works on &lt;strong&gt;Windows, Mac, and Linux&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 Future Improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add an &lt;strong&gt;Others&lt;/strong&gt; folder for unknown file types&lt;/li&gt;
&lt;li&gt;Schedule script with &lt;strong&gt;Task Scheduler (Windows)&lt;/strong&gt; or &lt;strong&gt;Cron Jobs (Linux/Mac)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add a GUI interface for non-technical users&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙌 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project is a simple yet powerful example of how &lt;strong&gt;Python automation&lt;/strong&gt; can simplify everyday tasks. With just a few lines of code, you can turn a messy folder into a well-organized one.&lt;/p&gt;

&lt;p&gt;💡 If you want to try it out, check out the GitHub repo here 👉 &lt;a href="https://github.com/imranc07/python-file-organizer-automation.git" rel="noopener noreferrer"&gt;python-file-organizer-automation&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;✍️ &lt;strong&gt;Author: Imran Ahmad&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
🚀 Passionate about Python Automation, Selenium, and scripting for productivity.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automated Testing of Swag Labs Web Application with Selenium &amp; PyTest 🚀</title>
      <dc:creator>Imran Ahmad</dc:creator>
      <pubDate>Fri, 05 Sep 2025 17:48:34 +0000</pubDate>
      <link>https://dev.to/imranc07/automated-testing-of-swag-labs-web-application-with-selenium-pytest-3cij</link>
      <guid>https://dev.to/imranc07/automated-testing-of-swag-labs-web-application-with-selenium-pytest-3cij</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Automated testing is a critical part of modern software development, ensuring web applications work as expected while saving time and effort. In this blog, I’ll walk you through how I automated the &lt;a href="https://www.saucedemo.com/?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Swag Labs&lt;/a&gt; web application using Selenium WebDriver, Python, and PyTest, leveraging Page Object Model (POM) and Data-Driven Testing (DDT) to improve test efficiency, maintainability, and scalability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🔧 Tools &amp;amp; Technologies Used&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Selenium WebDriver&lt;/strong&gt; – For browser automation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python &amp;amp; PyTest&lt;/strong&gt; – For scripting and test execution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Page Object Model (POM)&lt;/strong&gt; – To separate page interactions from test logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data-Driven Testing (DDT)&lt;/strong&gt; – To run tests with multiple datasets for robust validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Excel &amp;amp; PyTest Parameterization&lt;/strong&gt; – For managing test data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Browser Testing&lt;/strong&gt; – Ensuring compatibility across Chrome, Firefox, Edge, and Safari&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Integration (Optional)&lt;/strong&gt; – Can be integrated with GitHub Actions or Jenkins&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🏗️ Key Features Implemented&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Authentication &amp;amp; Login/Logout Automation&lt;/strong&gt;&lt;br&gt;
Automated user login with multiple credentials (standard_user, problem_user, performance_glitch_user, locked_out_user, guvi_user) and verified logout functionality, ensuring secure session management.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Button Functionality &amp;amp; Page Verification&lt;/strong&gt;&lt;br&gt;
Tested core buttons (Login, Logout, Cart, Checkout) and verified webpage navigation and title to ensure expected behavior.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Random Product Selection &amp;amp; Cart Verification&lt;/strong&gt;&lt;br&gt;
Implemented Python logic to randomly select four products out of six, add them to the cart, and validate cart contents dynamically without hardcoding products.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Checkout Automation &amp;amp; Screenshot Capture&lt;/strong&gt;&lt;br&gt;
Automated entering user details during checkout, verified product details in the overview, captured screenshots in PNG/JPG format, and completed the checkout process.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Data-Driven Testing (DDT) via Excel&lt;/strong&gt;&lt;br&gt;
Used PyTest parameterization and test data from TestData/data.py and TestData/testdata.xlsx to run tests with multiple datasets, covering various scenarios and edge cases.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Cross-Browser Testing&lt;/strong&gt;&lt;br&gt;
Executed scripts across multiple browsers (Chrome, Firefox, Edge, Safari) to ensure consistent functionality and user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🚀 Benefits of This Automation Approach&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;✔ &lt;strong&gt;Enhanced Test Coverage&lt;/strong&gt; – Multiple datasets validate different scenarios, reducing manual oversight&lt;br&gt;
✔ &lt;strong&gt;Faster Execution&lt;/strong&gt; – Automation speeds up repetitive testing&lt;br&gt;
✔ &lt;strong&gt;Improved Maintainability ** – POM ensures reusable, organized, and easy-to-maintain code&lt;br&gt;
✔ **Scalable for CI/CD&lt;/strong&gt; – Seamless integration with CI/CD tools enables automated regression testing&lt;br&gt;
✔ &lt;strong&gt;Cross-Browser Assurance&lt;/strong&gt; – Validates functionality across different browser environments&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;📌 Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Automating the Swag Labs web application using Selenium and PyTest helped increase efficiency, improve maintainability, and enhance test coverage. Using POM and DDT makes the framework scalable and easy to extend for future test cases.&lt;/p&gt;

&lt;p&gt;This approach can be adapted for any web application, providing a robust solution for automated quality assurance.&lt;/p&gt;

&lt;p&gt;💡 Check out the source code on my GitHub repository: &lt;a href="https://github.com/imranc07/Capstone_Project.git" rel="noopener noreferrer"&gt;Capstone Project Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got questions or suggestions? Drop a comment below! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automated Testing of GUVI Web Application with Selenium &amp; PyTest 🚀</title>
      <dc:creator>Imran Ahmad</dc:creator>
      <pubDate>Sun, 02 Feb 2025 19:02:46 +0000</pubDate>
      <link>https://dev.to/imranc07/automated-testing-of-guvi-web-application-with-selenium-pytest-2ga9</link>
      <guid>https://dev.to/imranc07/automated-testing-of-guvi-web-application-with-selenium-pytest-2ga9</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Automated testing is a crucial step in modern software development, ensuring that web applications function as expected while saving time and effort. In this blog, I’ll walk you through how I automated the GUVI web application using Selenium WebDriver, Python, and PyTest, leveraging Page Object Model (POM), Data-Driven Testing (DDT), and Keyword-Driven Testing to enhance test efficiency and maintainability.&lt;/p&gt;

&lt;p&gt;🔧 Tools &amp;amp; Technologies Used&lt;/p&gt;

&lt;p&gt;Selenium WebDriver – For browser automation.&lt;/p&gt;

&lt;p&gt;Python &amp;amp; PyTest – For scripting and test execution.&lt;/p&gt;

&lt;p&gt;Page Object Model (POM) – To enhance maintainability and reusability.&lt;/p&gt;

&lt;p&gt;Data-Driven &amp;amp; Keyword-Driven Testing – For flexible test coverage.&lt;/p&gt;

&lt;p&gt;Jenkins – For Continuous Integration/Continuous Deployment (CI/CD).&lt;/p&gt;

&lt;p&gt;Excel &amp;amp; PyTest Parameterization – For implementing DDT.&lt;/p&gt;

&lt;p&gt;Cross-browser Testing – Ensuring compatibility across multiple browsers.&lt;/p&gt;

&lt;p&gt;🏗️ Key Features Implemented&lt;/p&gt;

&lt;p&gt;✅ Authentication &amp;amp; Login/Logout Automation&lt;br&gt;
Automated user authentication to validate login and logout functionalities, ensuring secure access and session management.&lt;/p&gt;

&lt;p&gt;✅ Button Functionality &amp;amp; Webpage Title Verification&lt;br&gt;
Developed test scripts to validate button clicks, page navigations, and webpage title verification to ensure expected behavior.&lt;/p&gt;

&lt;p&gt;✅ Data-Driven Testing (DDT) via Excel&lt;br&gt;
Utilized PyTest parameterization to run tests with multiple datasets, ensuring robustness by covering various test scenarios.&lt;/p&gt;

&lt;p&gt;✅ CI/CD Integration with Jenkins&lt;br&gt;
Integrated Selenium test scripts with Jenkins, allowing automated test execution as part of the CI/CD pipeline. Configured scheduled test runs and email notifications for test reports.&lt;/p&gt;

&lt;p&gt;✅ Cross-Browser Testing&lt;br&gt;
Executed test scripts across multiple browsers (Chrome, Firefox, Edge, etc.) to ensure a consistent user experience across different environments.&lt;/p&gt;

&lt;p&gt;🚀 Benefits of This Automation Approach&lt;/p&gt;

&lt;p&gt;✔ Enhanced Test Coverage – Running tests with multiple datasets improves validation.&lt;br&gt;
✔ Faster Execution – Automated scripts reduce manual testing effort and improve test execution speed.&lt;br&gt;
✔ Improved Maintainability – Using POM ensures a clean, reusable test structure.&lt;br&gt;
✔ CI/CD Compatibility – Seamless integration with Jenkins allows continuous and automated testing.&lt;br&gt;
✔ Cross-Browser Assurance – Ensuring functionality remains intact across different browsers.&lt;/p&gt;

&lt;p&gt;📌 Conclusion&lt;/p&gt;

&lt;p&gt;Automating the GUVI web application with Selenium and PyTest enhanced test efficiency, improved maintainability, and ensured seamless integration into the CI/CD pipeline. This approach can be adapted for other web applications, making it a scalable solution for robust quality assurance in software development.&lt;/p&gt;

&lt;p&gt;💡 Check out the source code on my GitHub repository: &lt;a href="https://github.com/imranc07/Mini_Project_1" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got any questions or suggestions? Drop a comment below! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Automated Testing of HRM Web Application with Selenium &amp; PyTest</title>
      <dc:creator>Imran Ahmad</dc:creator>
      <pubDate>Fri, 31 Jan 2025 09:34:05 +0000</pubDate>
      <link>https://dev.to/imranc07/automated-testing-of-hrm-web-application-with-selenium-pytest-2g1n</link>
      <guid>https://dev.to/imranc07/automated-testing-of-hrm-web-application-with-selenium-pytest-2g1n</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Automated testing plays a crucial role in ensuring the reliability and efficiency of web applications. In this blog, I’ll walk you through how I automated an HRM (Human Resource Management) web application using Selenium WebDriver, Python, and PyTest, leveraging Page Object Model (POM) and Data-Driven Testing (DDT) methodologies.&lt;/p&gt;

&lt;p&gt;🔧 Tools &amp;amp; Technologies Used&lt;/p&gt;

&lt;p&gt;Selenium WebDriver – For browser automation&lt;br&gt;
Python &amp;amp; PyTest – For scripting and test execution&lt;br&gt;
Page Object Model (POM) – To enhance maintainability&lt;br&gt;
Data-Driven &amp;amp; Keyword-Driven Testing – For flexible test coverage&lt;br&gt;
Jenkins – For Continuous Integration/Continuous Deployment (CI/CD)&lt;/p&gt;

&lt;p&gt;🏗️ Key Features Implemented&lt;/p&gt;

&lt;p&gt;✅ Automated Login &amp;amp; Menu Functionality&lt;br&gt;
I automated the login process, ensuring the correct authentication flow, and tested menu navigation to verify UI elements and actions.&lt;/p&gt;

&lt;p&gt;✅ New User Creation &amp;amp; Verification&lt;br&gt;
Automated the process of creating a new user, filling out forms, and verifying the user’s existence in the system.&lt;/p&gt;

&lt;p&gt;✅ Data-Driven Testing (DDT) Implementation&lt;br&gt;
Used DDT with multiple datasets, enabling test execution with various input values to ensure comprehensive validation.&lt;/p&gt;

&lt;p&gt;✅ Web Element Interaction Optimization&lt;br&gt;
Used CSS Selectors and XPath for precise web element interaction.&lt;br&gt;
Implemented explicit waits to handle dynamic elements.&lt;/p&gt;

&lt;p&gt;✅ CI/CD Integration with Jenkins&lt;br&gt;
Integrated Selenium scripts with Jenkins, enabling automated test execution as part of the CI/CD pipeline.&lt;br&gt;
Configured scheduled test runs and email notifications for test results.&lt;/p&gt;

&lt;p&gt;✅ Parallel Execution for Faster Testing&lt;br&gt;
Optimized test scripts for parallel execution, reducing test runtime and improving efficiency.&lt;/p&gt;

&lt;p&gt;🚀 Benefits of This Automation Approach&lt;/p&gt;

&lt;p&gt;Enhanced Test Coverage: Running tests with various datasets improves reliability.&lt;br&gt;
Faster Execution: Parallel execution reduces overall test duration.&lt;br&gt;
Improved Maintainability: POM ensures code reusability and cleaner test scripts.&lt;br&gt;
CI/CD Compatibility: Seamless integration with Jenkins enables continuous testing.&lt;/p&gt;

&lt;p&gt;📌 Conclusion&lt;br&gt;
Automating the HRM web application using Selenium and PyTest not only improved test efficiency but also ensured smooth deployment cycles. This approach can be extended to other web applications, making it a scalable solution for quality assurance in software development.&lt;/p&gt;

&lt;p&gt;💡 Check out the source code on my GitHub repository: &lt;a href="https://github.com/imranc07/Mini_Project_2" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;br&gt;
Got any questions or suggestions? Drop a comment below! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is software testing?</title>
      <dc:creator>Imran Ahmad</dc:creator>
      <pubDate>Mon, 22 Jul 2024 19:09:56 +0000</pubDate>
      <link>https://dev.to/imranc07/what-is-software-testing-33</link>
      <guid>https://dev.to/imranc07/what-is-software-testing-33</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. What is software testing?&lt;/strong&gt;&lt;br&gt;
     Software testing is the testing of software to its worst and the best conditions. It is the process of verifying the software that it is&lt;br&gt;
     a. Error free,&lt;br&gt;
     b. Works as per the design,&lt;br&gt;
     c. Meets the user requirement,&lt;br&gt;
     d. Defect free before release,&lt;br&gt;
     e. Don not hang while using,&lt;br&gt;
     f. Do not crash,&lt;br&gt;
     g. Response time is very less,&lt;br&gt;
     h. Multiple users can access the contents very smoothly,&lt;br&gt;
     i. Best in the market.&lt;br&gt;
For example: Testing Flipkart website,&lt;br&gt;
     a. To verify that user can sign in with valid credentials, &lt;br&gt;
     b. To very that particular offer is applicable,&lt;br&gt;
     c. User can create only one account with his / her mobile number &lt;br&gt;
        or email ID,&lt;br&gt;
     d. Particular milestone is applicable to particular user only,&lt;br&gt;
     e. Only premium user can access the premium content,&lt;br&gt;
     f. Plus Premium offer applicable to Plus Premium member only,&lt;br&gt;
     g. Refund is going to user’s bank account only,&lt;br&gt;
     h. User can order multiple items at a time,&lt;br&gt;
     i. At the time of sale, one user can order one quantity only,&lt;br&gt;
     j. User can cancel the order,&lt;br&gt;
     k. User can return the product if it is not meeting the &lt;br&gt;
        requirement or is defective,&lt;br&gt;
     l. User can buy any product for any of his relative or friend,&lt;br&gt;
     m. User can “wish-list” the product,&lt;br&gt;
     n. User can add multiple accounts,&lt;br&gt;
     o. User can add multiple addresses,&lt;br&gt;
     p. User can use multiple platform for login like android &lt;br&gt;
        application, official website, etc.&lt;br&gt;
     q. Admin can ‘bar’ the seller.&lt;br&gt;
     r. Admin can cancel the seller license.&lt;br&gt;
     s. Admin cannot buy from admin login.&lt;br&gt;
     t. One user cannot see other users personal data,&lt;br&gt;
     u. User can share orders with anybody,&lt;br&gt;
     v. User can contact customer care via chat, email or telephonic &lt;br&gt;
        conversation,&lt;br&gt;
     w. User can write product review,&lt;br&gt;
     x. Admin can approve or reject product review&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.    What we need to know about software testing?&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Software Development Life Cycle (SDLC),&lt;/li&gt;
&lt;li&gt;Software Testing Life Cycle(STLC),

&lt;ol&gt;
&lt;li&gt;Levels of testing,
a. Unit Testing,
b.  Integration Testing,
c. System testing and
d. Acceptance Testing.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;SDLC models,
 a. Waterfall Model,
 b. V Model,
 c. Agile Model (most commonly used) and
 d. Spiral Model.&lt;/li&gt;

&lt;li&gt;Quality Assurance (QA) and&lt;/li&gt;

&lt;li&gt;Quality Control (QC).&lt;/li&gt;

&lt;li&gt;Test Case design techniques
 a. Error Guessing,
 b. Boundary Value Analysis,
 c. Decision Table Testing, etc.&lt;/li&gt;

&lt;li&gt;White Box Testing and Black Box Testing&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;3. What is the relevance of software testing?&lt;/strong&gt;&lt;br&gt;
     Software testing is very essential to improve the quality of product, here are some reasons why software testing is important.&lt;br&gt;
     a. To satisfy the user requirement&lt;br&gt;
     b. To work as per the design&lt;br&gt;
     c. To help in saving time and money (cost saving)&lt;br&gt;
     d. Security&lt;br&gt;
     e. To prevent Image loss of company&lt;br&gt;
     f. To prevent Loss of business&lt;br&gt;
     g. To prevent Trust Loss&lt;br&gt;
     h. To prevent Employment loss.&lt;br&gt;
     i. To prevent Financial Loss&lt;br&gt;
     j. To improve Quality of software&lt;br&gt;
     k. To Improve the development process&lt;br&gt;
     l. To add new features&lt;br&gt;
     m. To Improve product features, etc.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
