目标:解压 zipzipzip 文件夹下的所有 winzipwinzipwinzip 文件,当需要解压密码时,利用 tkintertkintertkinter 弹框接收密码,最终把所有解压出来的文件放到 unzipunzipunzip 文件夹下

  • pyzipperpyzipperpyzipper : 0.3.5
  • tkintertkintertkinter : pythonpythonpython 内置包

文件分布情况:

把上面的六个普通文件每两个压缩为一个 winzipwinzipwinzip 文件,其中 zip_3.zipzip\_3.zipzip_3.zip 是有密码的,密码如下图

Code:Code:Code:

import os
import pyzipper as pz
from pathlib import Path
import tkinter as tk
from tkinter import StringVar
zip_folder = r'C:\Users\Desktop\test\zip'
output_path = r'C:\Users\Desktop\test\unzip'password = ''
filename_list = os.listdir(zip_folder)
for i in filename_list:# 首先创建用于存放后面解压出来的文件的文件夹unzip_files_folder_name = i.split('.')[0].strip()unzip_path = Path(output_path).resolve().joinpath(unzip_files_folder_name)if not os.path.exists(unzip_path):os.mkdir(unzip_path)# 循环直到输入正确密码flag = 1while flag:try:with pz.AESZipFile(os.path.join(zip_folder, i).strip()) as unzip:unzip.extractall(path=unzip_path, pwd=bytes(password, 'utf-8'))flag = 0# 若报错,说明需要密码,这时候才会弹框except RuntimeError:root = tk.Tk()root.title('')  # 设置弹框的标题root.geometry('200x80')  # 设置弹框的大小root.wm_attributes('-topmost', 1)pwd_string = StringVar()label1 = tk.Label(root, text="Please input the correct password.").pack()text = tk.Entry(root, borderwidth=1, width=40, show='*', textvariable=pwd_string)text.pack()  # 由于文本框绑定了快捷键,因此先设置后打包button = tk.Button(root, text="Confirm", command=lambda: [root.destroy()], width=10, height=1).pack()  # 设置按钮属性# 设置快捷键root.bind('<Escape>', lambda event=None: root.destroy())text.bind('<Return>', lambda event=None: root.destroy())root.mainloop()# 获取 passward 以在外部复用password = pwd_string.get()continue

运行结果:



几点要注意的地方:

  • 即使解压文件不需要密码,给 pyzipperpyzipperpyzipper 传入pwd参数也能正常运行
  • 在这种情况,也就是以用户输入的密码作为 pyzipperpyzipperpyzipper 函数的参数进行解压,在使用 tkintertkintertkinter 时一定要把用户输入的密码传给能在外部使用的变量,这里的外部指的是 tkintertkintertkinter 循环的外部,也就是执行 pyzipperpyzipperpyzipper 的地方。在 tkintertkintertkinter(内部)中,有一个用于接收文本框(EntryEntryEntry)中输入的类 StringVar,通过它,我们就能实现把用户从框内输入的值从内部拿到外部。所以整个流程是: 用户在文本框输入 passwordpassword \spacepassword  →\rightarrow→ tk.Entry\space tk.Entry tk.Entry接收后在 textvariabl处传给 pwd_string(StringVar)pwd\_string(StringVar)pwd_string(StringVar) →\rightarrow \space→  在循环外部使用StringVar的类方法get把密码值赋值给 passwordpasswordpassword
  • 设置文本框、按钮等 widgetwidgetwidget 时,若无需绑定快捷键(即代码中的bind),可以不为它们赋值,如代码中的 “label1=label1=label1=” 就可以删去

『Python』tkinter 弹窗解压加密的 winzip文件相关推荐

  1. python之Tkinter详解

    Python之Tkinter详解 文章目录 Python之Tkinter详解 1.Tkinter是什么 2.Tkinter创建窗口 ①导入 tkinter的库 ,创建并显示窗口 ②修改窗口属性 ③创建 ...

  2. python 图像压缩后前端解压_Python在后台自动解压各种压缩文件的实现方法

    1.需求描述 编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 g ...

  3. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  4. 让Python在后台自动解压各种压缩文件!

    作者 | 刘早起 来源 | 早起Python(ID:zaoqi-python) 头图 |  CSDN 下载自东方IC   需求描述 编写一个 Python 程序,每次下载压缩包形式的文件后,自动将内部 ...

  5. Python爬虫教程-16-破解js加密实例(有道在线翻译)

    python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...

  6. Auto.js 压缩 解压 加密文件

    log("加密="+加密()) log("解密="+解压()) function 加密() {try {let dir = '/sdcard/脚本/模块/';/ ...

  7. java解压加密的7z格式文件

    引言 最近在 项目中需要解压带有密码的.7z文件,然后获得里面的数据,之前都是zip 文件没有接触过解压7z类型的 文件,在这分享一下解压工具类,该 工具类可以同时解压带有密码的7z文件和zip文件. ...

  8. C#压缩或解压(rar和zip文件)

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  9. 推荐一款好用解压RAR、ZIP文件Mac软件,可以输入密码Dr. Unarchiver

    推荐一款好用解压RAR.ZIP文件Mac软件,可以输入密码Dr. Unarchiver. 今天工作中Windows发给我一个加密RAR文件,是公司很重要的文件,可是Mac不支持呀,因此我把App St ...

最新文章

  1. 如何定制一款12306抢票浏览器——完结篇
  2. python3.6安装-Linux安装python3.6
  3. 基于canvas绘制的一个跟随鼠标变幻的动态背景线条
  4. 体育馆黑名单系统 的设定
  5. 天津理工大学 计算机网络综合实验,天津理工大学计算机网络 实验二
  6. 苹果数据线不能充电_20亿个不能用的苹果充电器,库克,你的这波强制“环保”翻车了...
  7. 电气计算机基础知识,电气基础知识
  8. 友盟分享纯图片到微信
  9. 机房收费系统个人重构—图(文档)
  10. games101-789-shading
  11. ICLR 2020 图神经学习论文汇总
  12. grep exclude
  13. win 10 亮度调节不能使用了
  14. 面试系统设计_如何进行系统设计面试
  15. wiki服务器网页地址,搭建个人wiki站点
  16. ddr的地址线数据线的串联电阻分别靠近cpu还是靠近ddr?
  17. 分式相乘转换成分式加减的一般性方法的简单讨论
  18. 将屏幕内容保存到文件中
  19. LabVIEW编程LabVIEW控制研华PCI-1756例程与相关资料
  20. 第十一章 特征选择与稀疏学习

热门文章

  1. 驾驶员内部考试资料-不看书照样100分
  2. 苹果呼叫转移设置不了_为什么苹果手机下载不了软件?3步教你解决
  3. Android中四大组件(四大天王)
  4. DevOps敏捷测试之道(全栈最详解)
  5. Opencv-python滤镜系列(1): 浮雕和雕刻滤镜效果实现
  6. 海湾gst5000协议号_海湾GST5000/GST9000主机电源盒/DC-DC火灾报警控制器电源盒
  7. 下载安装SQL Sever 2022全过程
  8. c++11 尾随返回类型
  9. realtek+wifi+linux驱动下载,RealTek wifi 驱动移植说明_V1.0 PDF 下载
  10. 苹果电脑误删除的文件怎么恢复?