Ejemplo n.º 1
0
def OpenFolder(obj, dict):
    winshell.undelete(obj.obj.original_filename())
    listOfDirs = os.listdir(obj.sahiPath)
    winshell.delete_file(obj.obj.original_filename())
    fmt = "{0:3} | {1:8} | {2:10}"
    print(fmt.format("Sr:", "Type:", "Name:"))
    Sr = 0
    for i in listOfDirs:
        Sr += 1
        if "." in i:
            type = "file"
        else:
            type = "Folder"
        print(fmt.format(Sr, type, i))
    print(" Enter serial no to open any file/folder \n Press B to go back ")
    n = input("Enter: ")
    if str(n) == "B" or str(n) == "b":
        Beginning(dict)
    else:
        try:
            n = eval(n)
            name = listOfDirs[n - 1]
            path = obj.sahiPath + "\\\\" + listOfDirs[n - 1]
            if "." in name:
                ClearScreen()
                OpenFileFromFolder(obj, path, dict)
            else:
                ClearScreen()
                OpenFolderFromFolder(obj, path, dict)
        except:
            ClearScreen()
            print(" Enter a valid serial no ")
            OpenFolder(obj, dict)
Ejemplo n.º 2
0
def DeleteItem(obj):
    winshell.undelete(obj.obj.original_filename())
    if obj.typeOfObj == "File":
        os.remove(obj.sahiPath)
    elif obj.typeOfObj == "Folder":
        shutil.rmtree(obj.sahiPath)
    Beginning(None)
Ejemplo n.º 3
0
 def DeleteButton(self):
     if self.currentItemCheck == False:
         winshell.undelete(self.currentItem.obj.original_filename())
     if self.currentItem.typeOfObj == "File":
         os.remove(self.currentItem.sahiPath)
     elif self.currentItem.typeOfObj == "Folder":
         shutil.rmtree(self.currentItem.sahiPath)
     self.setupUi(MainWindow, True)
Ejemplo n.º 4
0
def OpenFile(obj, dict):
    try:
        winshell.undelete(obj.obj.original_filename())
        file = open(obj.sahiPath, 'r')
        R = file.read()
        file.close()
        winshell.delete_file(obj.obj.original_filename())
        print(R)
        print("Press any key to go back")
        key = input("Enter: ")
        if key != '':
            ClearScreen()
            OperationOnItem(obj, dict)
    except:
        ClearScreen()
        print("This file can not be opened ")
        OperationOnItem(obj, dict)
Ejemplo n.º 5
0
def Beginning(dictionary):
    ClearScreen()
    if dictionary is None:
        listOfItems = list(winshell.recycle_bin())

        dictOfObjects = {}
        fmt = "{0:3} | {1:8} | {2:10}"
        print(fmt.format("Sr:", "Type:", "Name:"))
        for i, v in enumerate(listOfItems):
            serialNo = i + 1
            path = v.original_filename()
            listOfPath = path.split("\\")
            newPath = "\\\\".join(listOfPath)
            winshell.undelete(path)
            name = listOfPath[-1]
            if os.path.isdir(newPath) == True:
                type = "Folder"
                size = get_dir_size(newPath)
                listOfFolderItems = os.listdir(newPath)
                noOfFolder = 0
                noOfFile = 0
                for i in listOfFolderItems:
                    checkpath = newPath + '\\\\' + i
                    if os.path.isdir(checkpath) == True:
                        noOfFolder += 1
                    elif os.path.isfile(checkpath) == True:
                        noOfFile += 1
                dictOfObjects[serialNo] = DeletedObject(
                    v, type, name, newPath, "{0:.1f}".format(size / 1024),
                    [noOfFile, noOfFolder])
            elif os.path.isfile(newPath) == True:
                type = "file"
                size = os.path.getsize(newPath)
                dictOfObjects[serialNo] = DeletedObject(
                    v, type, name, newPath, "{0:.1f}".format(size / 1024), [])
            winshell.delete_file(path)
            print(fmt.format(serialNo, type, name))
        SelectedItem(dictOfObjects)
    else:
        fmt = "{0:3} | {1:8} | {2:10}"
        print(fmt.format("Sr:", "Type:", "Name:"))
        for k, v in dictionary.items():
            print(fmt.format(k, v.typeOfObj, v.name))
        SelectedItem(dictionary)
Ejemplo n.º 6
0
def OpenFileFromFolder(obj, filepath, dict):
    try:
        winshell.undelete(obj.obj.original_filename())
        file = open(filepath, "r")
        R = file.read()
        file.close()
        winshell.delete_file(obj.obj.original_filename())
        print(R)
        print(" Press any key to go back ")
        key = input(" Enter: ")
        if key:
            ClearScreen()
            OpenFolderFromFolder(obj, "\\\\".join(filepath.split("\\\\")[:-1]),
                                 dict)
    except:
        ClearScreen()
        print(" This file can not be opened ")
        OpenFolderFromFolder(obj, "\\\\".join(filepath.split("\\\\")[:-1]),
                             dict)
Ejemplo n.º 7
0
 def restore(self):
     restore_file = open("restore.txt", 'r')
     self.backup()
     for files in restore_file:
         try:
             splitted = files.split(',')
             new_file = splitted[0]
             if len(splitted) != 2:
                 continue
             filed = new_file.rstrip('\n')
             filepath = os.path.abspath(filed)
             new_file1 = splitted[1]
             filed2 = new_file1.rstrip('\n')
             new_filepath = os.path.abspath(filed2)
             winshell.undelete(filepath)
             print(Fore.GREEN + f'Restored file > {filed}')
             shutil.move(filepath, new_filepath)
             print(Fore.MAGENTA +
                   f'Moving back to original position {splitted[1]}')
         except Exception as e:
             print(Fore.RED + f"Failed to restore file {filed}")
     open("restore.txt", 'w+').close()
Ejemplo n.º 8
0
def RestoreItem(obj):
    winshell.undelete(obj.obj.original_filename())
    Beginning(None)
Ejemplo n.º 9
0
def undelete(sourcePath):
    winshell.undelete(sourcePath)
Ejemplo n.º 10
0
#Requirements ---  pip install pypiwin32
#                  pip install winshell

import winshell
import os

try:
    winshell.recycle_bin().empty(confirm=True, show_progress=True,
                                 sound=True)  #empty Recycle Bin

    filepath = os.path.abspath("test.txt")
    with open(filepath, "w") as f:
        f.write("testfile1")

    winshell.delete_file(filepath)  #delete a file

    print(*winshell.recycle_bin().versions(filepath),
          sep="\n")  #versions of file in recycle bin

    winshell.undelete(filepath)  #recovers the latest recycled version

except Exception as e:
    print(str(e))
Ejemplo n.º 11
0
 def RestoreButton(self):
     if self.currentItemCheck == False:
         winshell.undelete(self.currentItem.obj.original_filename())
     self.setupUi(MainWindow, True)
Ejemplo n.º 12
0
    def FolderUi(self, MainWindow, selected, main, iter, path, lst):
        # MainWindow = MainW
        # MainWindow.setWindowFlag(QtCore.Qt.WindowCloseButtonHint, False)
        self.currentItemCheck = True
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1200, 700)
        MainWindow.setMinimumSize(QtCore.QSize(1200, 700))
        MainWindow.setMaximumSize(QtCore.QSize(1200, 700))
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(0, 160, 900, 520))
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(6)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(5, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 0, item)
        self.tableWidget.horizontalHeader().setVisible(False)
        self.tableWidget.horizontalHeader().setDefaultSectionSize(225)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.verticalHeader().setDefaultSectionSize(150)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 1200, 100))
        self.label.setStyleSheet(
            "background-image: url(:/header/images/Untitled-1.png);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(900, 269, 300, 411))
        self.label_2.setStyleSheet("\n"
                                   "background-color: rgb(212, 212, 212);")
        self.label_2.setObjectName("label_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(940, 120, 200, 50))
        self.pushButton.setStyleSheet(
            "background-image: url(:/header/images/btn-1_3.png);")
        self.pushButton.setText("")
        self.pushButton.setCheckable(False)
        self.pushButton.setAutoDefault(False)
        self.pushButton.setDefault(False)
        self.pushButton.setFlat(True)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(940, 190, 200, 50))
        self.pushButton_2.setStyleSheet(
            "background-image: url(:/Buttons/images/btn-2_2.png);")
        self.pushButton_2.setText("")
        self.pushButton_2.setFlat(True)
        self.pushButton_2.setObjectName("pushButton_2")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(310, 700, 118, 3))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(900, 260, 301, 16))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")

        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(0, 100, 901, 71))
        self.label_5.setStyleSheet(
            "\n"
            "background-image: url(:/pic/images/patti_5.png);")
        self.label_5.setText("")
        self.label_5.setObjectName("label_5")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(10, 112, 121, 41))
        self.pushButton_3.setStyleSheet(
            "background-image: url(:/Buttons/images/back_3.png);")
        self.pushButton_3.setText("")
        self.pushButton_3.setFlat(True)
        self.pushButton_3.setObjectName("pushButton_3")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(140, 110, 751, 41))
        self.label_6.setStyleSheet("color: rgb(255, 255, 255);\n"
                                   "font: 63 14pt \"Segoe UI Semibold\";")
        self.label_6.setObjectName("label_6")
        self.label_5.raise_()
        self.tableWidget.raise_()
        self.label.raise_()
        self.label_2.raise_()
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        self.line.raise_()
        self.line_2.raise_()
        self.pushButton_3.raise_()
        self.label_6.raise_()
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1200, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.tableWidget.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)

        _translate = QtCore.QCoreApplication.translate
        self.label_6.setText(
            _translate(
                "MainWindow",
                "Go Back to Main Window before closing the program, unless the folder will be Restored"
            ))

        self.tableWidget.cellClicked.connect(self.FolderCellClicked)
        self.tableWidget.cellDoubleClicked.connect(self.folderCellDClicked)
        if iter == False:
            winshell.undelete(selected.obj.original_filename())
        if main == True:
            self.folderPath = selected.sahiPath
            self.listOfFolderItems = os.listdir(selected.sahiPath)
        elif main == False:
            self.folderPath = path
            self.listOfFolderItems = os.listdir(path)
        sizeOfList = len(self.listOfFolderItems)
        if sizeOfList >= 4:
            self.tableWidget.setColumnCount(4)
            self.tableWidget.setRowCount(math.ceil(sizeOfList / 4))
        else:
            self.tableWidget.setColumnCount(sizeOfList)
            self.tableWidget.setRowCount(1)
        row = 0
        col = 0
        for i, v in enumerate(self.listOfFolderItems):
            col = i % 4
            if i != 0 and col == 0:
                row += 1
            ext = v.split(".")
            if len(ext) == 1:
                self.FolderCreator(v, row, col)
            else:
                self.FileCreator(v, row, col)

        self.main = main
        self.selected = selected
        self.lst = lst
        self.lstOfParams = [selected, main, iter, path, lst]

        self.pushButton_3.clicked.connect(self.folderGopBack)
Ejemplo n.º 13
0
    def FileUI(self, MainWindow, cont, selected, main, lst):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1200, 700)
        MainWindow.setMinimumSize(QtCore.QSize(1200, 700))
        MainWindow.setMaximumSize(QtCore.QSize(1200, 700))
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(0, 0, 1200, 100))
        self.label.setStyleSheet(
            "background-image: url(:/header/images/Untitled-1.png);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(900, 269, 300, 411))
        self.label_2.setStyleSheet("\n"
                                   "background-color: rgb(212, 212, 212);")
        self.label_2.setObjectName("label_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(940, 120, 200, 50))
        self.pushButton.setStyleSheet(
            "background-image: url(:/header/images/btn-1_3.png);")
        self.pushButton.setText("")
        self.pushButton.setCheckable(False)
        self.pushButton.setAutoDefault(False)
        self.pushButton.setDefault(False)
        self.pushButton.setFlat(True)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(940, 190, 200, 50))
        self.pushButton_2.setStyleSheet(
            "background-image: url(:/Buttons/images/btn-2_2.png);")
        self.pushButton_2.setText("")
        self.pushButton_2.setFlat(True)
        self.pushButton_2.setObjectName("pushButton_2")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(310, 700, 118, 3))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(900, 260, 301, 16))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(0, 100, 901, 71))
        self.label_5.setStyleSheet(
            "\n"
            "background-image: url(:/pic/images/patti_5.png);")
        self.label_5.setText("")
        self.label_5.setObjectName("label_5")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(10, 118, 121, 41))
        self.pushButton_3.setStyleSheet(
            "background-image: url(:/Buttons/images/back_3.png);")
        self.pushButton_3.setText("")
        self.pushButton_3.setFlat(True)
        self.pushButton_3.setObjectName("pushButton_3")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(140, 118, 751, 41))
        self.label_6.setStyleSheet("color: rgb(255, 255, 255);\n"
                                   "font: 63 14pt \"Segoe UI Semibold\";")
        self.label_6.setObjectName("label_6")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(0, 170, 900, 520))
        self.textEdit.setObjectName("textEdit")
        self.label_5.raise_()
        self.label.raise_()
        self.label_2.raise_()
        self.pushButton.raise_()
        self.pushButton_2.raise_()
        self.line.raise_()
        self.line_2.raise_()
        self.pushButton_3.raise_()
        self.label_6.raise_()
        self.textEdit.raise_()
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1200, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.textEdit.setReadOnly(True)

        # self.pushButton_2.clicked.connect(self.RestoreButton)
        # self.pushButton.clicked.connect(self.DeleteButton)

        try:
            self.lst = lst
            if cont == None:
                winshell.undelete(selected.obj.original_filename())
                file = open(selected.sahiPath, "r")
                content = file.read()
                file.close()
                winshell.delete_file(selected.obj.original_filename())
                self.textEdit.setPlainText(content)
            else:
                _translate = QtCore.QCoreApplication.translate
                self.label_6.setText(
                    _translate(
                        "MainWindow",
                        "Go Back to Main Window before closing the program, unless the folder will be Restored"
                    ))
                self.textEdit.setPlainText(cont)
        except:
            self.msgBox("ERROR", "Can't Open This Type of File")
        if main == True:
            self.pushButton_3.clicked.connect(self.goBack)
        else:

            self.pushButton_3.clicked.connect(self.goCustomBack)
Ejemplo n.º 14
0
def shred(mode='Basic', path=''):
    """
    The Function shreds files in order to protect the user's identity.
    :param mode: the shredding mode: Basic, Safe, Complete
    :param path: the path to be shredded: Recycle Bin or Temporary files
    :return: None
    """
    start_time = time.perf_counter()
    failed_shredding = list()
    if mode == 'Basic':
        repeat = 1
    elif mode == 'Safe':
        repeat = 5
    else:  # mode == 'Complete':
        repeat = 10

    if path == 'Let Me Choose':
        path = random.choice(['Recycle Bin', 'Temporary Files'])

    executed = False  # An auxiliary boolean variable
    if path == 'Recycle Bin':
        object_list = list(winshell.recycle_bin())
        if object_list:  # if list is not empty
            print(f'Starting Shredding process at {path}\n')
            executed = True
            print(f'We are getting ready to shred {len(object_list)} files')
            time.sleep(1)
            for index, file_path in enumerate(object_list):
                for _ in range(repeat):
                    try:
                        success = False
                        file_path = '\\'.join(
                            file_path.original_filename().split('\\')
                        )  # adding double slash (\\) in the file_path
                        # undeleting the selected file
                        winshell.undelete(file_path.original_filename())
                        if not os.path.isdir(file_path):  # is file
                            success = shred_file(file_path)
                            if not success:  # if didn't succeed shredding the file
                                failed_shredding.append(file_path)
                        # deleting the selected file again
                        winshell.delete_file(file_path.original_filename())
                    except:
                        pass
                if (index + 1) == (len(object_list)):  # last file
                    sys.stdout.write(
                        f'\rShredding ({int(((index + 1) / len(object_list)) * 100)}%): {basename(file_path)}last'
                    )
                else:
                    sys.stdout.write(
                        f'\rShredding ({int(((index + 1) / len(object_list)) * 100)}%): {basename(file_path)}'
                    )

            # Emptying recycle bin.
            winshell.recycle_bin().empty(confirm=False,
                                         show_progress=False,
                                         sound=False)
            print('\nShredding Report:')
            print(
                f'Successfully shred: {len(object_list) - len(failed_shredding)} '
                f'out of {len(object_list)} Files || Failed to shred : '
                f'{len(failed_shredding)} files')
            finish_time = time.perf_counter()
        else:
            print('There are no items in the Recycle Bin to be shredded\n')

    elif path == 'Temporary Files':
        directory_path = r'c:\windows\temp'
        object_list = os.listdir(directory_path)
        files_list = []
        if object_list:
            while object_list:
                for file in object_list:
                    file_path = directory_path + file
                    if file_path not in files_list:
                        files_list.append(file_path)
                    object_list.remove(file)
            print(f'Starting Shredding process at {path}\n')
            executed = True
            print(f'We are getting ready to shred {len(files_list)} files')
            time.sleep(1)
            for index, file_path in enumerate(files_list):
                if (index + 1) == len(object_list):  # last file
                    sys.stdout.write(
                        f'\rShredding ({int((index / len(files_list)) * 100)}%): {basename(file_path)}last'
                    )
                else:
                    sys.stdout.write(
                        f'\rShredding ({int((index / len(files_list)) * 100)}%): {basename(file_path)}'
                    )
                for _ in range(repeat):
                    try:
                        if not os.path.isdir(file_path):  # is file
                            success = shred_file(file_path)
                            if not success:  # if didn't succeed shredding the file
                                failed_shredding.append(file_path)
                    except:
                        pass

            for file in files_list:
                os.remove(file)
            process = subprocess.Popen(
                'del /S /Q /F %s\\*.*' % directory_path,
                shell=True,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE)  # deleting all temporary files
            process.communicate()
            finish_time = time.perf_counter()
            print('\n\nShredding Report:')
            print(
                f'Successfully shredded: {len(files_list) - len(failed_shredding)} '
                f'out of {len(files_list)} Files || Failed to shred : '
                f'{len(failed_shredding)} files. Deleted: {len(files_list)}')

    if executed:
        print(
            f'Shredding has been finished in {progress_duration(finish_time - start_time)}'
        )
        from Graphic_Interface import display_notifications
        display_notifications('Shredding process has finished.')
    else:
        print(
            f"""We didn't shred any files since we couldn't find any in {path} """
        )