❤️女朋友桌面文件杂乱无章?气得我用Python给她做了一个文件整理工具❤️

Python编程实例-Tkinter GUI编程-Themes(主题) 本实例将演示如何将 Tkinter 主题从一个更改为另一个。 阅读详情

先看效果图
请添加图片描述

写在前面

事情是这样子的,昨天回去无意看了一下女朋友桌面,密密麻麻的全是文件,各式各样的占满屏幕,简直要把我这个强迫症给难受死,让她整理一下,还懒的整理。
在这里插入图片描述
于是中午没休息写了一个文件整理工具给这个懒猪,希望她能够识抬举,给我点奖励~哈哈
废话不多说,进入正题!

主要涉及到的库:
tkinter:实现 GUI 编程(文本框、按钮、标签等组件实现 GUI 开发)。
pathlib:面向对象的编程方式来表示文件系统路径。
ttkthemes:tkinter 主题包,让你的组件外观更加骚。
Pyinstaller:是一个非常简单的打包 .py 文件的库。


文件整理功能

本文实现的文件整理实际是一种文件分类的功能,将指定文件夹下的文件进行分类,并移动到该类别的文件夹下。

首先需要定义一个文件类型的字典,来指定每个类别文件有哪些。

FILE_TYPE = {
    "图片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg",
               ".heif", ".psd", ".raw"],
    "视频": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng",
               ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
    "文档": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods",
                  ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
                  ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt",
                  "pptx",".csv",",pdf", ],
    "压缩文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z",
                 ".dmg", ".rar", ".xar", ".zip"],
    "影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3",
              ".msv", ".ogg", ".oga", ".raw", ".vox", ".wav", ".wma"],
    "编程": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css", ".ipynb", ".h", '.class'],
    "可执行程序": [".exe"],
}

整体代码的逻辑十分简单:遍历指定文件夹下的文件,忽略文件夹,只获取文件,判断文件类型是否在文件夹中出现,如果出现则移动到指定文件夹中(不存在文件夹则创建),否则归类到其他文件中。

from pathlib import Path

dir_path = r'C:\Users\pc\Desktop\test'
# 遍历指定文件夹下的文件,忽略文件夹
for file_path in Path(dir_path).glob('*.*'):
    temp = 0  # 标志是否已经通过FILE_TYPE分类
    for key, value in FILE_TYPE.items():
        if file_path.suffix in value:
            sub_dir = Path(dir_path, key)  # 某类文件夹路径
            if not sub_dir.exists():
                sub_dir.mkdir(exist_ok=True)  # 创建文件夹
            file_path.rename(Path(sub_dir, file_path.name))  # 移动文件
            temp = 1
            break
    if temp == 0:
        sub_dir = Path(dir_path, '其他文件')
        if not sub_dir.exists():
            sub_dir.mkdir(exist_ok=True)  # 创建保存没有被识别文件的文件夹
        file_path.rename(Path(sub_dir, file_path.name))  # 移动文件

实现 GUI 界面

实现 GUI 界面时在原有功能上添加了一个还原按钮,能够撤销文件整理的操作。

设置界面主题样式

window = ThemedTk(theme="adapta", fonts=True, themebg=True)

自定义 Label 样式

label_style = ttk.Style()
label_style.configure("Label", font=("微软雅黑", 22, 'bold'), foreground="red", background="yellow")

添加 Label 标签,并使用自定义的样式

# 添加标签
label = tk.Label(window, text='♥向日葵的专属 sun♥', style='Label')

在这里插入图片描述

添加选择路径组件及功能实现

# 设置选择路径组件
path = tk.StringVar()
entry = ttk.Entry(window, textvariable=path, width=30)
button1 = ttk.Button(window,width=10, text = "选择路径", command = selectPath)

点击 “选择路径” 按钮,执行 selectPath() 函数,将选择的文件夹路径传递给 entry 来显示在界面上

def selectPath():
    global dir_path
    # 选择文件path接收文件地址
    dir_path = filedialog.askdirectory(title='选择待整理的文件夹')
    # 通过replace函数替换绝对文件地址中的/来使文件可被程序读取
    dir_path.replace("/", r"\\")
    path.set(dir_path)

在这里插入图片描述

添加“整理”,“撤销”组件及功能实现

# 添加“整理”按钮
button2 = ttk.Button(window,width=10, text = "整理", command = organize_files)
# 添加“还原”按钮
button3 = ttk.Button(window,width=10, text = "还原", command = cancle_organize)

点击“整理”按钮,执行 organize_files() 函数,实现文件整理,并记录文件原路径与新路径,同时也要记录新创建的文件夹路径,因为还原操作时要将新创建的文件夹进行删除。

def organize_files():
    if dir_path == '':
        tree.heading("#0", text="还未选取路径哦")
        return None
    global organize_temp
    organize_temp = 1
    # 遍历指定文件夹下的文件,忽略文件夹
    for file_path in Path(dir_path).glob('*.*'):
        temp = 0  # 标志是否已经通过FILE_TYPE继续分类
        for key, value in FILE_TYPE.items():
            if file_path.suffix in value:
                sub_dir = Path(dir_path, key)  # 某类文件夹路径
                if not sub_dir.exists():
                    sub_dir.mkdir(exist_ok=True)  # 创建文件夹
                    create_dir_path.append(sub_dir)
                file_path.rename(Path(sub_dir, file_path.name))  # 移动文件
                old_file_path[Path(sub_dir, file_path.name)] = file_path
                temp = 1
                break
        if temp == 0:
            sub_dir = Path(dir_path, '其他文件')
            if not sub_dir.exists():
                sub_dir.mkdir(exist_ok=True)  # 创建保存没有被识别文件的文件夹
                create_dir_path.append(sub_dir)
            file_path.rename(Path(sub_dir, file_path.name))  # 移动文件
            old_file_path[Path(sub_dir, file_path.name)] = file_path
        tree.heading("#0", text="整理完成")

点击“还原”按钮,执行 cancle_organize() 函数,还原文件至整理之前

def cancle_organize():
    if organize_temp == 0:
        tree.heading("#0", text="还未整理哦")
        return None
    for new_path, old_path in old_file_path.items():
        new_path.rename(old_path)  # 还原文件
    for dir_path in create_dir_path:
        dir_path.rmdir()  # 不能使用unlink()来删除,报错无权限
    tree.heading("#0", text="还原成功")

添加输出框显示运行后的信息

# 添加输出框显示
tree = ttk.Treeview(height=1, show=("tree", "headings"))

设置各个组件在界面的位置

# 设置组件位置
label.grid(row=0, column=0, padx=20, pady=40)
entry.grid(row = 3, column = 0, pady=5)
button1.grid(row = 3, column = 1, padx=20)
button2.grid(row = 4, column = 0, pady=5)
button3.grid(row = 5, column = 0, pady=5)
tree.grid(row=6, column=0, pady=5)

至此,一个文件整理的小工具就已经实现了。整体界面如下:
在这里插入图片描述


源码打包

首先要确保已经安装 pyinstaller,没有安装的可以先安装一下。

pip install -i https://pypi.douban.com/simple pyinstaller 

pyinstaller 使用时的常用参数含义:

-F:打包单个文件,产生一个文件用于部署(默认),如果代码都写在一个 .py 文件时使用,项目有多个文件时不要使用

pyinstaller -F xxx.py

-D:打包多个文件,产生一个目录用于部署(默认),用于框架编写的代码打包

pyinstaller -D xxx.py(项目入口文件)

–key=keys:使用 keys 进行加密打包

pyinstaller --key=123456 -F xxx.py

-d:产生 debug 版本的可执行文件

-p:用来添加程序所用到的包的所在位置,设置导入路径,可以用 ; ( Linux 使用 :)分割来指定多个目录。

-w:表示不用控制台窗口,使用 Windows 子系统执行,当程序启动的时候不会打开命令行(只对 Windows 有效)

-c:表示打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)(只对 Windows 有效)

-i:将 file.ico 添加为可执行文件的资源,改变程序的图标(只对 Windows 系统有效)

安装完成后,新建一个文件夹,将源文件放到该文件夹下面,打开cmd, cd 进入该文件夹下(重点),执行下面语句
在这里插入图片描述

生成的文件结构如下

exe 可执行文件在 dist 目录下
在这里插入图片描述
到这里就可以把 .exe 文件发送别人了,并且可以在没有任何配置的情况下运行哦~(前提是同样是 Windows 下)

这里的图标是我自己在网上找的。

如果没有 ico 格式的图标的话,

推荐一个免费的 icon 网站:https://iconstore.co/

然后在 https://www.aconvert.com/cn/icon/svg-to-ico/ 转换成指定大小的 ico 图标。


晚上去找女朋友领奖励~
在这里插入图片描述

这就是本文所有的内容了,如果感觉还不错的话。❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享各种有趣的文章,如果感兴趣的话可以点个关注不迷路哦~。

❤️源码获取方式❤️

最后文章中的源码及打包后的文件已经放到链接下,需要的可以自己下载。
代码获取:https://download.youkuaiyun.com/download/qq_43965708/21539497

像我这么宠粉的人~当然会给关注我的粉丝们亿点小福利啦,关注下方小卡片,回复 “文件整理工具” 即可获取源码哦!,另外还有博主各种文章源码及干货资料!

👇 👇 👇

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入 本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记 阅读详情

相关推荐

RT-Thread网络编程:基于STM32F407的TCP客户端实现(含完整代码解析)

本文详细介绍了在STM32F407平台上,基于RT-Thread操作系统和LWIP协议栈实现工业级可靠TCP客户端的完整过程。内容涵盖底层ETH驱动配置、Socket编程、连接保活与断线重连机制、数据收发协议设计以及资源管理,提供了可应用于实际项目的健壮代码框架与调试技巧。

weixin_29184371的博客 492

Python脚本桌面文件整理脚本

哈哈,可是最近桌面实在是太乱了,自己都看不下去了,几乎占满了整个屏幕。虽然一键整理桌面的软件很多,但是对于其他路径下的文件,我同样需要整理,于是我想到使用Python,完成这个需求。

Yoki___的博客 584

从仿真到实物:Realsense D435+ROS2焊接机械臂的视觉标定与数据验证指南

本文详细介绍了如何将Realsense D435相机与ROS2焊接机械臂从仿真环境迁移到实物部署的全过程。通过视觉标定、数据验证和焊接场景优化,确保系统在真实环境中精准可靠。重点讲解了硬件配置、驱动优化、数据一致性验证及焊接应用的特殊处理,为工业自动化开发者提供实用指南。

weixin_28701593的博客 407

ttkthemes项目教程

ttkthemes项目教程 1. 项目目录结构及介绍 ttkthemes是一个旨在提升Tkinter应用界面美观度的开源项目,通过提供一组丰富的 ttk (Tk themed widget set) 主题来覆盖不同审美需求。以下是其典型目录结构及其简要介绍: ttkthemes/ │ ├── AUTHORS.md # 作者信息 ├── LICENSE # 许可证文...

gitblog_00162的博客 1098

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为

KJ.JK 1072

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 568

Python tkinter 设置主题

开头说明:设置的主题只对使用tkinter.ttk创建的控件有效 安装库 sudo apt install python3-tk python3-pip # 安装 tkinter 和 pip(对于 debian 发行版及其分支) pip3 install ttkthemes # 重点在此 获取主题 import ttkthemes # 用于设置主题 print(ttkthemes.THEMES) # 获取主题列表并打印 gfdgd_xi@gfdgd-xi-PC:~/Documen

gfdgd xi 3102

PCL RANSAC拟合分割圆柱体模型【2026最新版】

使用RANSAC拟合分割圆柱的原理介绍、官网示例代码实现以及一个可视化拟合出来的圆柱的具体应用案例。博客长期更新,最近一次更新时间为:2026年1月28日。

点云侠的博客 40万+

【Python】Tkinter开发笔记07:Sun-Valley-ttk-theme主题修改

试过直接导入库,但是可能由于我电脑装太多个python版本了,pip不知道下载到哪里去,工程调用一直报错,项目时间赶等有空再研究吧。下面使用另一种方式实现Sun-Valley-ttk-theme主题的修改。链接:https://pan.baidu.com/s/1KqFhCQHZLVvvjCmNLWz0aA。Azure-ttk-theme-main是微软主题。主题切换时直接调用 top.tk.call即可。需要把这两个文件复制到要使用的工程目录。

GFH358的博客 1620

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7265

从码农到生态建造者:我的一人公司运作方案

华哥·OPC 运营方案 v1.0 - 第一次迭代 🚀,搭建闭环生态系统,赋能 AI 时代的超级个体,更好的做自己,同时照亮别人。

AaronZZH 的博客 995

python ttk 有哪些主题

Python 的 Tkinter 的 ttk 库有以下主题: 'alt': 一种蓝色主题 'clam': 一种淡蓝色主题 'classic': 一种灰色主题 'default': 一种黑色主题 'vista': 一种深蓝色主题 可以使用 Tkinter 的 ttk 库中的 ttk.Style().theme_use() 方法来设置 ttk 的主题。比如: import tkinter as t...

weixin_35755188的博客 2163

YOLOv12改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构

本文记录的是基于。采用了创新性的方法,通过精心平衡网络和来提升性能。本文将的设计优势融入YOLOv12中,提升YOLOv12的性能与效率,使其在目标检测任务中表现更为出色。本文配置了原模型中的共种不同大小的模型结构,以满足不同的需求。

Limiiiing的博客 963

pyintaller + ttk Mac+windows打包教程

pyintaller + ttk Mac+windows打包教程。

u013278255的博客 788

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python语言可换主题ttk界面从服务器拿日志文件

python语言可换主题ttk库界面,linux下从服务器拿文件用的scp命令

qiaozhangchi的专栏 1445

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python图形界面设计工具,python的图形界面gui编程

适用对象 适用于学习了TKinter并不想太麻烦写GUI代码,也不想用其他工具和框架 比如wxPython,PyQt4的同学。适用于界面不太复杂的小程序开发,界面复杂的还是适用wxPython等框架吧 不会c语言也可以学python。因为TKinter为Python标准库,使用TKinter完成的Python程序可以称为 “绿色软件”,不需要目标机器上安装wxPython,PyQt4等框架,只要有Python 的机器就能运行。如果软件逻辑不是很复杂,通常一个*.py搞定,不像其他框架,需要几个文件。

S1112_的博客 1200

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

那些年我们用过的final和static

final 在 Java 中有什么作用? final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。 特征:凡是引用final关键字的地方皆不可修改! (1)修饰类:表示该类不能被继承; (2)修饰方法:表示方法不能被重写; (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。 final有哪些用法? final也是很多面试喜欢问的地方,但我觉得这个问题很无聊,通常能回答下以下5点就不错了: 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被final

7me 1071

博客中常用的Emoji表情整理,欢迎自取

💓💓😃😃😃(亲测有效)优快云,简书、知乎支持表情 💞💞😃😃😃整理了一下优快云,简书、知乎支持表情方便今后使用

⛄沉淀分享成长--长久的沉淀势必会收获到你想要的,那些旅途上的果实 45万+

XPATH

XPath 在XML文件中查找信息的一套规则/语言,根据XML的元素或者属性进行遍历 http://www.w3school.com.cn/xpath/index.asp XPath 开发工具 开源的XPath表达式编辑工具:XMLQuire Chrome插件:XPath Helper Firefox插件: XPath Checker 选取节点 nodename: 选取此节点的所有子节点 /: 从...

超域的博客 208

python 漂亮GUI 之ttkbootstrap和Sun-Valley-ttk-theme

python 漂亮GUI1.ttkbootstrap2. Sun-Valley-ttk-theme 1.ttkbootstrap ttkbootstrap学习链接 2. Sun-Valley-ttk-theme Sun-Valley-ttk-theme学习链接

weixin_39451323的博客 2875

⭐️⭐️表情图片优快云,简书、知乎⭐️⭐️

优快云支持表情 整理一下优快云支持表情方便今后使用(亲测有效) ???? ???? ???? ???? ☺️ ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???????? ???? ???? ???? ???

shiyzhang 5万+

Python实用工具之制作证件照(有界面、附源码、赞关藏)

removebg配置 安装对应的 Python 库 pip install -i https://pypi.douban.com/simple removebg 获取API Key 进入 Removebg 官网,完成账号注册。 填写完注册信息后,会发送验证邮件到你的邮箱,点击进入后会进入如下界面。 点击 Remove image background 再点击红圈中的 Tool & API ...

向日葵的专属太阳 1万+

❤️❤️C语言实现三子棋❤️❤️(有音乐和各种颜色显示)

C语言实现三子棋 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录C语言实现三子棋前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,

艾小方的博客 380

博客中可用的Emoji表情符号集,拿走不谢❤️❣️

5:20 ━━━━━━️❤️──────── 13:14 ???? ◀️ ⏸ ▶️ ☰

爱国小白帽 3万+

11_C语言指万恶之源——指针篇

本文通过快递管理系统实例,全面讲解了C语言中指针与数组、函数、常量的关系。主要内容包括:1. 指针数组与数组指针的区别解析;2. 指针函数与函数指针的实际应用;3. 常量指针与指针常量的本质差异;4. 二维数组与数组指针的内存访问原理。文章采用生活化比喻(如"保安"和"私人管家")帮助理解复杂概念,并提供完整代码示例展示指针在快递管理系统中的实际应用,包括查找、更新、遍历等操作。特别强调编译器"第一眼"规则和const关键字的使用技巧,适合不同层次

qq_73850061的博客 708
上一篇: ⭐️GUI编程:图片批量加水印,附打包exe教程带图标(干货巨多,建藏!)⭐️
下一篇: 【计算机设计大赛近年获奖信息】数据分析及可视化
Dream丶Killer
Dream丶Killer 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄8年 7万+粉丝 187原创
评论 221
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值