- N +

801-拖入文件夹自动压缩为压缩包【带界面-源代码】

801-拖入文件夹自动压缩为压缩包【带界面-源代码】原标题: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

实例说明

假设用户进行了以下操作:

  1. 文件夹A文件夹B文件夹C拖拽到指定区域。
  2. 选择压缩格式为7z
  3. 选择保存位置为原目录。
  4. 点击“点击开始压缩列表内每个文件夹”按钮。

程序执行后,文件夹A文件夹B文件夹C将被压缩成文件夹A.7z文件夹B.7z文件夹C.7z,并保存在原目录下。同时,程序会在日志框中显示类似以下的信息:

[任务] 开始压缩任务...
[成功] 压缩完成:路径/文件夹A.7z
[成功] 压缩完成:路径/文件夹B.7z
[成功] 压缩完成:路径/文件夹C.7z
[任务] 所有文件夹压缩任务已完成

如果用户选择了使用txt密码库,并且密码库文件内容如下:

password1
password2
password3

程序会依次使用password1password2password3来压缩文件夹A文件夹B文件夹C,并在日志框中显示类似以下的信息:

[任务] 开始压缩任务...
[成功] 使用密码 password1 压缩成功:路径/文件夹A.7z
[信息] 已使用密码保存到:路径/文件夹A_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[成功] 使用密码 password2 压缩成功:路径/文件夹B.7z
[信息] 已使用密码保存到:路径/文件夹B_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[成功] 使用密码 password3 压缩成功:路径/文件夹C.7z
[信息] 已使用密码保存到:路径/文件夹C_使用密码.txt
[信息] 密码库已更新,已移除已使用密码
[任务] 所有文件夹压缩任务已完成

注意事项

• 如果目标路径无效或没有写入权限,程序会在日志中记录错误信息。

• 如果在压缩过程中发生错误(例如密码错误或文件被占用),程序会在日志中记录错误信息。

• 用户可以通过点击“点击清除列表内所有文件夹”按钮来清空所有添加的文件夹。

• 用户可以通过点击“清除日志”按钮来清空日志框中的信息。

操作步骤

  1. 启动程序:运行上述Python脚本,启动图形化界面程序。
  2. 添加文件夹:将需要压缩的文件夹拖拽到指定区域。
  3. 选择压缩格式:选择压缩文件的格式(7z、zip、rar)。
  4. 选择保存位置:选择压缩文件的保存位置(原目录或指定目录)。
  5. 选择密码选项:选择是否添加密码以及密码的来源。
  6. 开始压缩:点击“点击开始压缩列表内每个文件夹”按钮,程序将开始遍历文件夹并压缩。
  7. 查看日志:在日志框中查看操作过程中的详细信息。
  8. 清除列表:如果需要清空所有添加的文件夹,点击“点击清除列表内所有文件夹”按钮。
  9. 清除日志:如果需要清空日志框中的信息,点击“清除日志”按钮。

代码逻辑说明

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使用,也可以自行修改部分代码实现想要的功能


查看源代码

隐藏内容,开通会员可免费查看!
售价:300 
月度会员 免费查看
开通会员
开通月度会员或更高级的会员可免费查看该内容

登录注册购买      开通会员免费查看

  • 随机文章
  • 热门文章

收藏本文章

作者:softbangong
使用批处理解放双手,使用softbangong一直赢。 学无止境,精准有效方为上上策。 softbangong你的贴身助手!
返回列表
上一篇:
下一篇:
您需要 登录账户 后才能发表评论

发表评论取消回复中国互联网举报中心

快捷回复:

验证码

    评论列表 (暂无评论,共10人参与)参与讨论

    还没有评论,来说两句吧...