使用python制作一个解压缩软件
作者:Woo_home 发布时间:2023-04-27 19:08:37
python实现解压缩的重要模块就是——zipfile,其次是os
安装zipfile模块
首先得安装zipfile模块,打开cmd输入一下命令即可安装
pip install zipfile
os是python自带的库,所以无需另外安装,直接 import 即可
编写核心代码
压缩文件核心代码:
def zip_file():
zip_name = path.get() +'.zip' # 获取绝对路径然后给压缩文件加上.zip结尾
z = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED) # 写入.zip
for dirpath, dirnames, filenames in os.walk(path.get()):# 使用os遍历目录路径,目录名,文件名
fpath = dirpath.replace(path.get(),'') # 获取目录路径
fpath = fpath and fpath + os.sep or ''
for filename in filenames: # 迭代文件名
z.write(os.path.join(dirpath, filename),fpath+filename) # 写入
z.close() # 关闭资源,以免占用内存
zip_file_message() # 调用zip_file_message弹出信息框
解压文件核心代码:
def unzip_file():
r = zipfile.is_zipfile(filename.get()) # 判断是否为压缩文件以.zip为判断依据
if r: # 如果是则执行if里面的语句,如果不是执行else里面的语句
fz = zipfile.ZipFile(filename.get(), 'r') # 读取压缩文件
for file in fz.namelist(): # 遍历文件
fz.extract(file, outputfile.get()) # 输出文件
unzip_file_message() # 调用unzip_file_message弹出信息框
else:
failed() # 调用failed弹出信息框
以上基本可以实现文件的解压和压缩了,但是如果想给别人也能使用呢?比如你想发给你女朋友使用,但是她的电脑没有安装python环境,安装又显得麻烦那怎么弄?没事,我们可以结合tkinter图形界面来整合一下
安装tkinter模块
tkinter是一个图形界面的模块,类似的有pyqt,感兴趣的朋友可以去网上了解一下
安装tkinter,只需使用下面的命令即可安装
pip install tkinter
安装成功后,导入我们需要使用的组件
from tkinter import * # 导入tkinter的所有组件
from tkinter.filedialog import askdirectory # 导入目录操作库
import tkinter.messagebox # 弹出消息框
import tkinter.filedialog # 导入操作文件的库
整合代码
然后整合上面两个核心代码
既然要有图形界面,首先得有界面是吧
root = Tk() # 初始化
root.mainloop() # 显示窗口
有了界面之后就是把组件(按钮,标签,输入框)噼里啪啦的加上去就行了,这里就不具体描述了
具体代码实现:
from tkinter import * # 导入tkinter的所有组件
from tkinter.filedialog import askdirectory # 导入目录操作库
import tkinter.messagebox # 弹出消息框
import tkinter.filedialog # 导入操作文件的库
# 界面代码实现
def main():
# label标签 grid括号中的row代表你的label是放在第几行,column是放在第几列
Label(root,text = "压缩目录路径:").grid(row = 0, column = 0)
# Entry是获取输入
Entry(root, textvariable = path).grid(row = 0, column = 1)
# 操作按钮
Button(root, text = "目录选择", command = selectPath).grid(row = 0, column = 2)
# Label标签
Label(root,text = "解压目录路径:").grid(row = 1, column = 0)
# Entry是获取输入
Entry(root, textvariable = filename).grid(row = 1, column = 1)
# 操作按钮
Button(root, text = "文件选择", command = selectFile).grid(row = 1, column = 2)
# Label标签
Label(root,text = "解压到:").grid(row = 2, column = 0)
# Entry是获取输入
Entry(root, textvariable = outputfile).grid(row = 2, column = 1)
# 操作按钮
Button(root, text = "解压路径选择", command = outputFlie).grid(row = 2, column = 2)
# 操作按钮
Button(root,text="压缩文件",command=zip_file).grid(row=3,column=0)
# 操作按钮
Button(root,text="解压文件",command=unzip_file).grid(row=3,column=2)
# 操作按钮
Button(root,text="退出程序",command=root.quit).grid(row=4,column=1)
#显示操作界面
root.mainloop()
if __name__ == '__main__':
root = Tk() # 初始化
path = StringVar() # 显示路径名
filename = StringVar() # 显示文件路径名
outputfile = StringVar() # 显示解压后的文件路径名
main() # 调用main函数
最终的界面实现如下:
效果展示
比如我们现在压缩一个400M的文件在这里插入图片描述
压缩之后的文件大小为:
压缩的速度还是挺快的,对比一下RAR压缩之后的大小
可以看到RAR压缩的好像更小点,但是无太大差别,且压缩速度上RAR要慢一点。反正这是我们自己做的,能做到这样也挺不错了是吧
安装pyinstaller模块
编写完代码之后就是将代码进行打包了,打包需要用到的模块就是 pyinstaller ,安装该模块也是非常简单,只需要使用下面的命令
pip install pyinstaller
打包程序为可执行文件
安装成功之后再次输入命令进行打包
pyinstaller -F -w 你的文件名.py
打包了,打包需要用到的模块就是 pyinstaller ,安装该模块也是非常简单,只需要使用下面的命令
pip install pyinstaller
打包程序为可执行文件
安装成功之后再次输入命令进行打包
pyinstaller -F -w 你的文件名.py
然后会在dist目录下生成一个 “你的文件名的.exe” 的可执行文件,那就大功告成了
总结
以上所述是小编给大家介绍的使用python制作一个解压缩软件网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/Woo_home/article/details/103012667


猜你喜欢
- 【作者翻译】结构和层次降低了复杂性并提高了可读性。你的文章或站点组织的越深入,用户就越容易理解你观点和得到你想传达的信息。在网页上,这点被通
- 1. UDPUDP是一种无连接的、不可靠的传输协议,相比于TCP,UDP具有数据传输速度快、传输延迟小等优点,但是不保证数据的可靠传输,需要
- 我想要的结果无非是去掉URL路径中的index.php首先是配置.htaccess<IfModule mod_rewrite.c>
- CocosCreator在1.8版本开始,就支持一键发布微信小程序,下面是详细的发布步骤:1、在微信公众平台下载微信开发者工具 地
- 常用的消息摘要算法有MD5和SHA,这些算法在python和go的库中都有,需要时候调用下就OK了,这里总结下python和go的实现。一、
- 问题:一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别的看下源码:@property &n
- 本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下:1. singlechain.go代码如下:////////////单
- 一、php事务处理概述:事务:是若干事件的集合事务处理:当所有事件执行成功,事务才执行;若有任何一个事件不能成功执行,事务的其它事件也不被执
- 一、了解Variable顾名思义,Variable就是 变量 的意思。实质上也就是可以变化的量,区别于int变量,它是一种可以变化的变量,这
- 1、搭载QT环境按win+R输入 pip install pyqt5 下载QT5 当然也可以去Qt的官网的下载 ,使用命令行更快捷方便 所以
- 在pycharm中我们有时需要切换python的版本,这里需要注意的是我们是在PyCharm中的Preferences中切换的,在File的
- 环境准备卸载mariadbrpm -qa | grep mariadbrpm -e --nodeps mariadb-libs-5.5.60
- 首先说一下需求,我需要将数据以分钟为单位进行分组,然后每一分钟内的数据作为一行输出,因为不同时间的数据量不一样,所以所有数据按照最长的那组数
- preface:做着最近的任务,对数据处理,做些简单的提特征,用机器学习算法跑下程序得出结果,看看哪些特征的组合较好,这一系列流程必然要用到
- PyQt5工具栏控件QToolBar介绍QToolBar控件是由文本按钮,图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方QTool
- <script language="javascript"> function window.onload(
- 如何最大限度地实现安全登录功能? 具体方法如下(这是一个程序,为便于说明,中间用虚线“------”将代
- 雪花算法是在一个项目体系中生成全局唯一ID标识的一种方式,偶然间看到了Python使用雪花算法不尽感叹真的是太便捷了。它生成的唯一ID的规则
- python-----从本地摄像头和网络摄像头截取图片 ,具体代码如下所示:import cv2# 获取本地摄像头# folder_path
- 1. 范数示例代码:import torcha = torch.full([8], 1)b = a.reshape([2, 4])c = a