Удаление файла с выводом на экран.

Sergey_2023

Новичок
Пользователь
Мар 22, 2023
14
1
3
Здравствуйте.

Есть такая задача, нужно удалить скрытый файл у которого выставлен атрибут Скрытый и находится этот файл в скрытой папке.
И нужно сделать короткий путь до этого файла как через CMD %LOCALAPPDATA% а не C:\Users\Пользователь\AppData\Local
И потом это всё вывести в textBrowser что файл удалён или не найден.

И файл не видит, так как он находится в скрытой папке.

Python:
#main

from builtins import bytearray, super
from PyQt5 import QtWidgets
from PyQt5.QtCore import QProcess
from ui import Ui_Form
import os
import sys
#-------------------------------------------------------------
class Form(QtWidgets.QMainWindow):
    def __init__(self):
        super(Form, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.init_UI()
#-------------------------------------------------------------
    def init_UI(self): #Кнопки checkBox
        self.ui.pushButton.clicked.connect(self.baseboard)
#-------------------------------------------------------------
    def baseboard(self): #Вывести информацию
        path = "%LOCALAPPDATA%/IconCache.db"
        os.remove(path)
        print("Файл удален.")

app = QtWidgets.QApplication([])
application = Form()
application.show()
 
sys.exit(app.exec())

#UI

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(390, 221)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(20, 180, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.textBrowser = QtWidgets.QTextBrowser(Form)
        self.textBrowser.setGeometry(QtCore.QRect(110, 10, 256, 192))
        self.textBrowser.setObjectName("textBrowser")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "Кнопка"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Python:
from builtins import bytearray, super
from PyQt5 import QtWidgets
from PyQt5.QtCore import QProcess
from ui import Ui_Form
import os
import sys


# -------------------------------------------------------------
class Form(QtWidgets.QMainWindow):
    def __init__(self):
        super(Form, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.init_UI()

    # -------------------------------------------------------------
    def init_UI(self):  # Кнопки checkBox
        self.ui.pushButton.clicked.connect(self.baseboard)

    # -------------------------------------------------------------
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\test.txt"
        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path} не найден")


app = QtWidgets.QApplication([])
application = Form()
application.show()

sys.exit(app.exec())
 
  • Мне нравится
Реакции: Sergey_2023

Sergey_2023

Новичок
Пользователь
Мар 22, 2023
14
1
3
Python:
from builtins import bytearray, super
from PyQt5 import QtWidgets
from PyQt5.QtCore import QProcess
from ui import Ui_Form
import os
import sys


# -------------------------------------------------------------
class Form(QtWidgets.QMainWindow):
    def __init__(self):
        super(Form, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.init_UI()

    # -------------------------------------------------------------
    def init_UI(self):  # Кнопки checkBox
        self.ui.pushButton.clicked.connect(self.baseboard)

    # -------------------------------------------------------------
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\test.txt"
        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path} не найден")


app = QtWidgets.QApplication([])
application = Form()
application.show()

sys.exit(app.exec())
Отлично благодарю.
Только не могу понять как удалить несколько файлов подряд.
Как можно перечислить список файлов.

Что то пытался сделать ну не выходит, что то я совсем не то делаю.


Python:
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path} не найден")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.setText(f"Файл {path2} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path2} не найден")
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Отлично благодарю.
Только не могу понять как удалить несколько файлов подряд.
Как можно перечислить список файлов.

Что то пытался сделать ну не выходит, что то я совсем не то делаю.


Python:
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path} не найден")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.setText(f"Файл {path2} удален")
            return
        self.ui.textBrowser.setText(f"Файл {path2} не найден")
первый return замените на if/else, и второй тоже можно
Python:
def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
        else:
            self.ui.textBrowser.setText(f"Файл {path} не найден")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.setText(f"Файл {path2} удален")
        else:
            self.ui.textBrowser.setText(f"Файл {path2} не найден")
 
  • Мне нравится
Реакции: Sergey_2023

Sergey_2023

Новичок
Пользователь
Мар 22, 2023
14
1
3
первый return замените на if/else, и второй тоже можно
Python:
def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.setText(f"Файл {path} удален")
        else:
            self.ui.textBrowser.setText(f"Файл {path} не найден")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.setText(f"Файл {path2} удален")
        else:
            self.ui.textBrowser.setText(f"Файл {path2} не найден")
Есть ещё один способ, можно сделать список файлов и потом удалять.

Ну есть проблема, через print в терминал всё выводит а вот через self.ui.textBrowser.setText выводит только последнее имя файла а не весь список. В вашем способе тоже самое.



Python:
def baseboard(self):  # Вывести информацию
     
        txt_path = f"{os.getenv('LOCALAPPDATA')}"
        # Определим список с именами лишних файлов
        del_list = ['1.txt', '2.txt', '3.txt']
     
        # поочередно проходим по элементам списка del_list
        for file_name in del_list:
            # определяем путь к текущему файлу с именем file_name
            file_path = Path(txt_path, file_name)
            # если файл по пути file_path существует,
            if Path.exists(file_path):
                # удаляем его и выводим сообщение об успешном удалении
                Path.unlink(file_path)
                self.ui.textBrowser.setText('Файл успешно удален: ' + str(file_path))
            # если файла, на который указывает путь file_path, не существует,
            else:
                # выводим сообщение об отсутствии файла
                self.ui.textBrowser.setText('Нет такого файла: ' + str(file_path))
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    28,7 КБ · Просмотры: 1
  • Screenshot_2.png
    Screenshot_2.png
    4,4 КБ · Просмотры: 1

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Есть ещё один способ, можно сделать список файлов и потом удалять.

Ну есть проблема, через print в терминал всё выводит а вот через self.ui.textBrowser.setText выводит только последнее имя файла а не весь список. В вашем способе тоже самое.



Python:
def baseboard(self):  # Вывести информацию
    
        txt_path = f"{os.getenv('LOCALAPPDATA')}"
        # Определим список с именами лишних файлов
        del_list = ['1.txt', '2.txt', '3.txt']
    
        # поочередно проходим по элементам списка del_list
        for file_name in del_list:
            # определяем путь к текущему файлу с именем file_name
            file_path = Path(txt_path, file_name)
            # если файл по пути file_path существует,
            if Path.exists(file_path):
                # удаляем его и выводим сообщение об успешном удалении
                Path.unlink(file_path)
                self.ui.textBrowser.setText('Файл успешно удален: ' + str(file_path))
            # если файла, на который указывает путь file_path, не существует,
            else:
                # выводим сообщение об отсутствии файла
                self.ui.textBrowser.setText('Нет такого файла: ' + str(file_path))
ну может документацию почитать? или просто погуглить?

Python:
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.append(f"Файл {path} удален\n")
        else:
            self.ui.textBrowser.append(f"Файл {path} не найден\n")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.append(f"Файл {path2} удален\n")
        else:
            self.ui.textBrowser.append(f"Файл {path2} не найден\n")
 
  • Мне нравится
Реакции: Sergey_2023

Sergey_2023

Новичок
Пользователь
Мар 22, 2023
14
1
3
ну может документацию почитать? или просто погуглить?

Python:
    def baseboard(self):  # Вывести информацию
        path = f"{os.getenv('LOCALAPPDATA')}\\1.txt"
        path2 = f"{os.getenv('LOCALAPPDATA')}\\2.txt"

        if os.path.isfile(path):
            os.remove(path)
            self.ui.textBrowser.append(f"Файл {path} удален\n")
        else:
            self.ui.textBrowser.append(f"Файл {path} не найден\n")

        if os.path.isfile(path2):
            os.remove(path2)
            self.ui.textBrowser.append(f"Файл {path2} удален\n")
        else:
            self.ui.textBrowser.append(f"Файл {path2} не найден\n")
Сложно даётся по книгам, на примерах быстрее разбираюсь.
Спасибо.
 

Форум IT Специалистов