Пример #1
0
class DelSelSuffixFile():
    def __init__(self):
        self.path = ''  # 需要操作的文件夹路径
        self.suffixes = []  # 文件夹下所有文件后缀
        logging.info(f'init path length = {len(self.path)}')

        # 从文件中加载UI定义
        qfile_stats = QFile('DelSelSuffixFile.ui')
        qfile_stats.open(QFile.ReadOnly)
        qfile_stats.close()

        # 从UI定义中动态创建一个相应的窗口对象
        self.ui = QUiLoader().load(qfile_stats)
        self.ui.setFixedSize(262, 225)  # 固定窗口大小

        self.ui.button.clicked.connect(self.getAllSuffixD)
        self.ui.delButton.clicked.connect(self.delSelSuffix)

    # 获取指定文件夹的路径,得到文件夹下所有文件的后缀名
    def getAllSuffixD(self):
        #获取指定文件夹的路径
        self.path = QFileDialog.getExistingDirectory(self.ui, './',
                                                     'C:/Users/ZH/Desktop')
        logging.info(f'SelPath = {self.path}, Path length = {len(self.path)}')

        # 遍历文件夹下的所有文件,提取所有后缀
        if len(self.path) > 0:
            for _, _, files in os.walk(self.path):
                logging.info(type(files))
                for name in files:
                    logging.info(f'file name = {name}')
                    suffix = os.path.splitext(name)[1]  # 提取文件后缀
                    logging.info(f'file suffix = {suffix}')
                    if suffix not in self.suffixes:
                        self.suffixes.append(suffix)
            logging.info(f'suffixes = {self.suffixes}')

            self.ui.lst.setSelectionMode(
                QAbstractItemView.MultiSelection)  # 设置之后可以通过鼠标左键多选
            self.ui.lst.addItems(self.suffixes)  #显示所有后缀以供选择
        else:
            pass

    # 删除所选择后缀的文件
    def delSelSuffix(self):
        items = self.ui.lst.selectedItems()
        logging.info(str(self.ui.lst.selectedItems()))
        selSuffixes = [item.text() for item in items]  #所有选中的待删除后缀
        logging.info(selSuffixes)

        # 删除所有选中后缀的文件
        if len(self.path) > 0:
            for root, _, files in os.walk(self.path):
                for name in files:
                    for suffix in selSuffixes:
                        if name.endswith(suffix):
                            os.remove(os.path.join(root, name))
                            print("Delete File: " + os.path.join(root, name))