In this article we will start to explore the technique which we will use to delete a duplicate file in our computer folder. The main objective in this chapter is to select a file in one folder and then searches and deletes the file with the same filename as the one which we have selected earlier. We will use back the same program which we have created in the previous chapter to delete the duplicate file in the computer hard drive.
First of all there are not many changes in the main file, I just include another if statement to make sure that a new remove thread instance will only get created if the folder which we want to search for the duplicate file has been selected.
from tkinter import * from tkinter import filedialog from Remove import Remove import os win = Tk() # 1 Create instance win.title("Multitas") # 2 Add a title win.resizable(0, 0) # 3 Disable resizing the GUI win.configure(background='black') # 4 change background color # 5 Create a label aLabel = Label(win, text="Remove duplicate", anchor="center") aLabel.grid(column=0, row=1) aLabel.configure(foreground="white") aLabel.configure(background="black") # 6 Create a selectFile function to be used by button def selectFile(): filename = filedialog.askopenfilename(initialdir="/", title="Select file") if(filename != ''): filename = filename.split('/')[-1] # this is for the windows separator only folder = filedialog.askdirectory() # 7 open a folder then create and start a new remove thread to delete the duplicate file if(folder != ''): remove = Remove(folder, aLabel, filename) remove.start() # 8 Adding a Button action = Button(win, text="Open Folder", command=selectFile) action.grid(column=0, row=0) # 9 Position the button action.configure(background='brown') action.configure(foreground='white') win.mainloop() # 10 start GUI
Next we will delete the duplicate file if we found one in another folder.
import threading import os class Remove(threading.Thread): def __init__(self, massage, aLabel, filename): threading.Thread.__init__(self) self.massage = massage self.label = aLabel self.filename = filename def run(self): text_filename = 'The is no duplicate item' filepaths = os.listdir(self.massage) for filepath in list(filepaths): if(filepath == self.filename): os.chdir(self.massage) os.remove(filepath) text_filename = filepath + ' has been removed' self.label.config(text=text_filename) return
This is just the beginning of this project which we will search within folders to further look for the file with the same name in the next chapter. But we will not stop there because what we really want to achieve is to delete a file with the same content instead of with the same name because the file with the same name might contains different contents which means that it is not a duplicate file after all, but for now lets pretend it is, the most important strategy of writing program is to build up the framework first.
from Planet Python
via read more
No comments:
Post a Comment