经常杂乱无章的文件夹会让我们找不到所想要的文件,因此小编特意制作了一个可视化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(): continue filePath = 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 category def organizeDir(self, event): path_val = self.textbox.text() print("路径为: " + path_val) for item in os.scandir(path_val): if item.is_dir(): continue filePath = Path(item) fileType = filePath.suffix.lower() directory = self.pickDir(fileType) if directory == None: continue directoryPath = 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 数据库的租房数据可视化系统
猜你喜欢
- 2小时前Python :MNIST手写数据集识别 + 手写板程序 最详细,直接放心,大胆地抄!跑不通找我,我包教!
- 2小时前Android Proguard混淆
- 2小时前【开源】基于JAVA语言的陕西非物质文化遗产网站
- 2小时前【智驾未来】低代码开发:加速创新交融的利器
- 2小时前SIP12 脚模块式单路交流信号隔离变送器0~1VAC0~5VAC转4-20mA0-5VDC
- 2小时前python 中的 setdefault 方法详解、底层原理和用法
- 2小时前python的pandas中如何在dataframe中插入一行或一列数据?
- 2小时前【华为OD机考 统一考试机试C卷】城市聚集度找城市(C++ Java JavaScript Python)
- 2小时前vectorCast添加边界值分析测试用例
- 2小时前如何脱离keil在vscode上实现STM32单片机编程
网友评论
- 搜索
- 最新文章
- 热门文章