Skip to content
Related Articles

Related Articles

Save Article
Improve Article
Save Article
Like Article

Automated File Organizer using Tkinter in Python

  • Difficulty Level : Medium
  • Last Updated : 03 Jan, 2021

Prerequisites: Tkinter

File organization is helpful when you are trying to find a specific one in a pool of files and directories. It seems time-consuming and exhausting to check each file. In cases where the number of files are way too many and you have no idea where to find it exactly, file organization is a saviour.

This article discusses how this can be done using Tkinter. This module will create a GUI that will make the task of searching for a file not just fast but also interactive and simple.

Modules Used:

  • Tkinter : For creating graphical user interface
  • Os : To interact with folders and files
  • Shutil : To move files to specific folder

Approach

  • Import module
  • Create program window
  • Select folder to be organized. This function will pop up a window where user will select the desired folder.
  • Create button to start organizing files
  • Add feedback message, so that the user has a clue what is going on
  • Set criteria for files to be selected. This article organizes files using their extension.
  • Create main
  • Call function loop to GUI

Program :

Python3




from tkinter import *
from tkinter import filedialog
import os
import shutil
  
  
class GUI(Tk):
    def __init__(self):
        super().__init__()
        self.geometry('500x500')
  
    def gettingPath(self):
        self.path = filedialog.askdirectory()
        return self.path
  
    def startButton(self, path_value):
        self.button_Frame = Frame(self)
        self.button_Frame.pack()
        self.start_Button = Button(self.button_Frame, text='Start', command=lambda: self.startOperation(
            path_value)).grid(row=0, column=0)
  
    def startOperation(self, path_value):
        count = 0
        os.chdir(path_value)
        self.file_list = os.listdir()
        no_of_files = len(self.file_list)
        if len(self.file_list) == 0:
            self.error_label = Label(text="Erroe empty folder").pack()
            exit()
        for file in self.file_list:
            if file.endswith(".png"):
                self.dir_name = "PngFiles"
                self.new_path = os.path.join(path_value, self.dir_name)
                self.file_list = os.listdir()
                if self.dir_name not in self.file_list:
                    os.mkdir(self.new_path)
                shutil.move(file, self.new_path)
  
            elif file.endswith(".txt"):
                self.dir_name = "TextFiles"
                self.new_path = os.path.join(path_value, self.dir_name)
                self.file_list = os.listdir()
                if self.dir_name not in self.file_list:
                    os.mkdir(self.new_path)
                shutil.move(file, self.new_path)
            count = count+1
  
        if(count == no_of_files):
            success = Label(text="Operation Successful!").pack()
        else:
            error = Label(text="Failed").pack()
  
  
if __name__ == '__main__':
    object = GUI()
    path = object.gettingPath()
    object.startButton(path)
    object.mainloop()

Output:




My Personal Notes arrow_drop_up
Recommended Articles
Page :