当前位置: 首页 > news >正文

用 Python 制作可视化 GUI 界面,一键实现自动分类管理文件!

经常杂乱无章的文件夹会让我们找不到所想要的文件,因此小编特意制作了一个可视化GUI界面,通过输入路径一键点击实现文件分门别类的归档。

不同的文件后缀归类为不同的类别

我们先罗列一下大致有几类文件,根据文件的后缀来设定,大致如下

SUBDIR = {"DOCUMENTS": [".pdf", ".docx", ".txt", ".html"],"AUDIO": [".m4a", ".m4b", ".mp3", ".mp4"],"IMAGES": [".jpg", ".jpeg", ".png", ".gif"],"DataFile": [".csv", ".xlsx"]
}

上面所罗列出来的文件后缀并不全面,读者可以根据自己的需求往里面添加,可以根据自己的喜好来进行分文别类,然后我们自定义一个函数,根据输入的一个文件后缀来判断它是属于哪个类的

def pickDir(value):for category, ekstensi in SUBDIR.items():for suffix in ekstensi:if suffix == value:return category

例如输入的是.pdf返回的则是DOCUMENTS这个类。我们还需要再自定义一个函数,遍历当前目录下的所有文件,获取众多文件的后缀,将这些不同后缀的文件分别移入不同类别的文件夹,代码如下

def organizeDir(path_val):for item in os.scandir(path_val):if item.is_dir():continuefilePath = Path(item)file_suffix = filePath.suffix.lower()directory = pickDir(file_suffix)directoryPath = Path(directory)# 新建文件夹,要是该文件夹不存在的话if directoryPath.is_dir() != True:directoryPath.mkdir()filePath.rename(directoryPath.joinpath(filePath))

output
在这里插入图片描述

我们再次基础之上,再封装一下做成Python可视化GUI界面,代码如下

class FileOrgnizer(QWidget):def __init__(self):super().__init__()self.lb = QLabel(self)self.lb.setGeometry(70, 25, 80, 40)self.lb.setText('文件夹整理助手:')self.textbox = QLineEdit(self)self.textbox.setGeometry(170, 30, 130, 30)self.findButton = QPushButton('整理', self)self.findButton.setGeometry(60, 85, 100, 40)self.quitButton = QPushButton('退出', self)self.quitButton.clicked.connect(self.closeEvent)self.findButton.clicked.connect(self.organizeDir)self.quitButton.setGeometry(190, 85, 100, 40)self.setGeometry(500, 500, 350, 150)self.setWindowTitle('Icon')self.setWindowIcon(QIcon('../751.png'))self.show()def pickDir(self, value):for category, ekstensi in SUBDIR.items():for suffix in ekstensi:if suffix == value:return categorydef organizeDir(self, event):path_val = self.textbox.text()print("路径为: " + path_val)for item in os.scandir(path_val):if item.is_dir():continuefilePath = Path(item)fileType = filePath.suffix.lower()directory = self.pickDir(fileType)if directory == None:continuedirectoryPath = Path(directory)if directoryPath.is_dir() != True:directoryPath.mkdir()filePath.rename(directoryPath.joinpath(filePath))reply = QMessageBox.information(self, "完成", "任务完成,请问是否要退出?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()def closeEvent(self, event):reply = QMessageBox.question(self, '退出',"确定退出?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()

效果如下图所示
在这里插入图片描述

最后我们通过pyinstaller模块来将Python代码打包成可执行文件,操作指令如下

pyinstaller -F -w 文件名.py

部分参数含义如下:

  • -F:表示生成单个可执行文件

  • -w:表示去掉控制台窗口,这在GUI界面时时非常有用的

  • -i:表示可执行文件的图标

技术交流

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

技术交流、资料干货、数据&源码,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:Python学习与数据挖掘,后台回复: tkinter
方式②、添加微信号:dkl88194,备注:来自CSDN +交流

毕设/大作业系列

  • 毕设/大作业:基于Python+Flask+MySQL的豆瓣电影可视化系统
  • 毕设/大作业:搭建基于 Python+Flask+MySQL 的学生培养计划管理系统(附源码)
  • 毕设/大作业:一款基于 Python+flask 的态势感知系统(附完整源码)
  • 毕设/大作业:基于 Python 的 Flask 框架开发的在线电影网站系统(附完整源码)
  • 毕设/大作业:基于 Echarts + Python Flask 动态实时大屏轻松可以实现
  • 毕设/大作业:基于 Python+Django 构建智能互动拍照系统
  • 毕设/大作业:基于 Python+Flask+SQLite 的网易云音乐评论情感分析系统
  • 毕设/大作业:基于 Python 和Surprise库,新手轻松搭建推荐系统
  • 毕设/大作业:基于 Python+Django+MySQL 数据库的租房数据可视化系统
http://www.lryc.cn/news/286746.html

相关文章:

  • 【STM32】USB程序烧录需要重新上电 软件复位方法
  • Java数据结构与算法:图算法之深度优先搜索(DFS)
  • SpringBoot整合QQ邮箱发送验证码
  • 云虚拟主机怎么修改代码?如何修改部署在虚拟主机的网站代码?
  • 电脑加固态硬盘有什么好处
  • LabVIEW电火花线切割放电点位置
  • 信通院发布《全球数字经济白皮书 (2023年)》解析
  • Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
  • BL0942 内置时钟免校准计量芯片 用于智能家居领域 上海贝岭 低成本 使用指南
  • 【算法专题】动态规划之路径问题
  • Python range函数
  • Unity中实现捏脸系统
  • openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)
  • 关于网络协议的笔记
  • 【江科大】STM32:USART串口(理论部分)上
  • 深入了解Linux中常见的五种文件类型
  • SSM项目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式)
  • 如何生成开发语言的排名图表
  • 有哪些简单好用、适合中小型企业的CRM系统?
  • Unity 适配器模式(实例详解)
  • Spring boot项目java bean和xml互转
  • 数字证书和数字证书认证机构和数字根证书,CA,RCA
  • java web mvc-08-Grails 入门介绍
  • 深度学习技术栈 —— Pytorch之TensorDataset、DataLoader
  • 远程git开发
  • Codeforces Round 812 (Div. 2) ---- C. Build Permutation --- 题解
  • Matlab 将工作区变量保存到文件中(save)
  • 源码实现简介
  • 我每天如何使用 ChatGPT
  • MySQL修炼手册14:用户权限管理:安全保障与数据隔离