原标题:801-拖入文件夹自动压缩为压缩包【带界面-源代码】
导读:
快速压缩文件夹工具。用户可以通过拖拽文件夹到指定区域来添加需要压缩的文件夹,支持多种压缩格式(7z、zip、rar),并且可以选择是否添加密码以及密码的来源(无密码、从txt文...
快速压缩文件夹工具。用户可以通过拖拽文件夹到指定区域来添加需要压缩的文件夹,支持多种压缩格式(7z、zip、rar),并且可以选择是否添加密码以及密码的来源(无密码、从txt文件读取、统一密码)。
实现功能
• 拖拽添加文件夹:用户可以将需要压缩的文件夹拖拽到指定区域来添加。
• 选择压缩格式:用户可以选择压缩文件的格式(7z、zip、rar)。
• 密码保护:用户可以选择是否添加密码,密码可以来自一个txt文件或者统一输入一个密码。
• 选择保存目录:用户可以选择压缩文件的保存位置(原目录或指定目录)。
• 开始压缩:点击“点击开始压缩列表内每个文件夹”按钮后,程序会遍历所有添加的文件夹并进行压缩。
• 清除列表:点击“点击清除列表内所有文件夹”按钮后,程序会清空所有添加的文件夹。
• 日志显示:程序会在界面的日志框中实时显示操作过程中的信息。
是否对子文件夹有效
该程序会对用户添加的所有文件夹进行压缩,包括这些文件夹内的子文件夹。
假设的文件夹及文件结构
假设我们有以下的文件夹和文件结构:
├── 文件夹A
│ ├── 文件夹A1
│ │ └── file1.txt
│ └── 文件夹A2
│ └── file2.txt
├── 文件夹B
│ ├── 文件夹B1
│ │ └── file3.txt
│ └── 文件夹B2
│ └── file4.txt
└── 文件夹C
├── 文件夹C1
│ └── file5.txt
└── 文件夹C2
└── file6.txt
实例说明
假设用户进行了以下操作:
- 将
文件夹A
、文件夹B
和文件夹C
拖拽到指定区域。 - 选择压缩格式为
7z
。 - 选择保存位置为原目录。
- 点击“点击开始压缩列表内每个文件夹”按钮。
程序执行后,文件夹A
、文件夹B
和文件夹C
将被压缩成文件夹A.7z
、文件夹B.7z
和文件夹C.7z
,并保存在原目录下。同时,程序会在日志框中显示类似以下的信息:
[任务] 开始压缩任务...
[成功] 压缩完成:路径/文件夹A.7z
[成功] 压缩完成:路径/文件夹B.7z
[成功] 压缩完成:路径/文件夹C.7z
[任务] 所有文件夹压缩任务已完成
如果用户选择了使用txt密码库,并且密码库文件内容如下:
password1
password2
password3
程序会依次使用password1
、password2
和password3
来压缩文件夹A
、文件夹B
和文件夹C
,并在日志框中显示类似以下的信息:
[任务] 开始压缩任务...
[成功] 使用密码 password1 压缩成功:路径/文件夹A.7z
[信息] 已使用密码保存到:路径/文件夹A_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[成功] 使用密码 password2 压缩成功:路径/文件夹B.7z
[信息] 已使用密码保存到:路径/文件夹B_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[成功] 使用密码 password3 压缩成功:路径/文件夹C.7z
[信息] 已使用密码保存到:路径/文件夹C_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[任务] 所有文件夹压缩任务已完成
注意事项
• 如果目标路径无效或没有写入权限,程序会在日志中记录错误信息。
• 如果在压缩过程中发生错误(例如密码错误或文件被占用),程序会在日志中记录错误信息。
• 用户可以通过点击“点击清除列表内所有文件夹”按钮来清空所有添加的文件夹。
• 用户可以通过点击“清除日志”按钮来清空日志框中的信息。
操作步骤
- 启动程序:运行上述Python脚本,启动图形化界面程序。
- 添加文件夹:将需要压缩的文件夹拖拽到指定区域。
- 选择压缩格式:选择压缩文件的格式(7z、zip、rar)。
- 选择保存位置:选择压缩文件的保存位置(原目录或指定目录)。
- 选择密码选项:选择是否添加密码以及密码的来源。
- 开始压缩:点击“点击开始压缩列表内每个文件夹”按钮,程序将开始遍历文件夹并压缩。
- 查看日志:在日志框中查看操作过程中的详细信息。
- 清除列表:如果需要清空所有添加的文件夹,点击“点击清除列表内所有文件夹”按钮。
- 清除日志:如果需要清空日志框中的信息,点击“清除日志”按钮。
代码逻辑说明
• log_message_queue:子线程调用该函数,将日志信息放入队列,由主线程统一更新文本框。
• is_valid_folder:判断给定路径是否为有效的文件夹。
• compress_folder:根据用户选择的压缩格式,调用7z或WinRAR进行压缩。
• on_drop:处理拖拽文件夹事件,解析路径并添加到列表。
• add_folder_item:在指定区域添加单个文件夹项,并附带移除按钮。
• remove_folder_item:移除一个文件夹项。
• compression_worker:子线程执行压缩逻辑,遍历所有文件夹进行压缩。
• compress_all:创建子线程执行压缩,避免主线程卡死。
• select_password_file:选择txt格式的密码文件。
• choose_save_directory:让用户选择压缩后保存的目录。
• clear_list:清空所有文件夹项。 • clear_log:清空日志区域。
• bind_scroll_wheel:为Canvas绑定鼠标滚轮事件。
• poll_log_queue:主线程定时器函数,用于读取子线程放入的日志消息,并实时更新在文本框中。
特殊说明
• 程序使用subprocess.run
调用7z或WinRAR命令行工具进行压缩。
• 程序使用queue.Queue
在主线程和子线程之间传递日志信息。
• 程序使用TkinterDnD
库实现拖拽功能。
• 程序使用threading.Thread
启动压缩任务,避免阻塞主线程。
python版本:3.86
是否带UI界面:UI版本
电脑系统版本:win10 64位 专业版系统(这是测试环境,其他环境也可以32位操作系统可能需要调整代码,让AI去转换即可)
脚本使用到的库:使用pycharm编辑器,如果没有安装相关库,会自动标红提示,鼠标放到标红的地方会弹出安装库按钮
重要提示:这是源代码,需要安装python使用,也可以自行修改部分代码实现想要的功能
查看源代码
- 随机文章
- 热门文章
- 708-读取txt搜索指定文件夹下文件并移动到目标文件夹
- 750-批量删除指定文件夹下指定文件
- 756-对指定文件夹下文件及文件夹建立目录树-支持导出多种文件格式
- 758-一键按照时间-按月份-按日期-文件类型-修改时间整理文件
- 762-批量提取移动指定文件夹内所有文件包括子孙文件夹文件到指定文件夹
- 770-批量获取指定目录下所有的一级文件夹名字
- 771-批量复制指定文件夹到多个文件夹中
- 786-批量移动指定文件夹下文件到目标文件夹下同名文件夹内
- 解决win系统电脑休眠唤醒后网络无法连接问题-只显示地球但是不可用
- 修复“你当前无权访问该文件夹”问题
- 1开通VIP会员享全站内容免费查看
- 2🔥🔥🔥承接各种批处理工具定制 / 售后相关信息 / 任何需求请在该文章下留言
- 3752-批量复制文件及文件夹到多个文件夹
- 410081-1-批量解压自解压文件-【支持密码-子文件穿透】【不支持嵌套自解压或压缩包解压】-除自解压文件外不能有其他exe文件
- 5790-批量统计各文件夹下文件类型数量及文件夹路径输出到excell
- 6网页插入bilibili哔哩哔哩视频
- 7401-批量识别pdf中二维码并替换为指定图片或覆盖白色
- 8431-批量合并指定文件夹下各文件夹内pdf为一个pdf文件
- 9Adobe程序完全卸载教程完全卸载无残留-【包括单个程序卸载和全部程序卸载】(win系统版本)
- 10为ps脚本添加快捷键快速调用
还没有评论,来说两句吧...