使用python制作一个解压缩软件

作者:Woo_home 时间:2023-04-27 19:08:37 

python实现解压缩的重要模块就是——zipfile,其次是os

安装zipfile模块

首先得安装zipfile模块,打开cmd输入一下命令即可安装

pip install zipfile

使用python制作一个解压缩软件

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

使用python制作一个解压缩软件

安装成功后,导入我们需要使用的组件


from tkinter import *            # 导入tkinter的所有组件          
from tkinter.filedialog import askdirectory # 导入目录操作库
import tkinter.messagebox          # 弹出消息框
import tkinter.filedialog          # 导入操作文件的库

整合代码

然后整合上面两个核心代码

既然要有图形界面,首先得有界面是吧


root = Tk()       # 初始化
root.mainloop()     # 显示窗口

使用python制作一个解压缩软件

有了界面之后就是把组件(按钮,标签,输入框)噼里啪啦的加上去就行了,这里就不具体描述了

具体代码实现:


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函数

最终的界面实现如下:


使用python制作一个解压缩软件

效果展示

使用python制作一个解压缩软件

比如我们现在压缩一个400M的文件在这里插入图片描述

使用python制作一个解压缩软件

压缩之后的文件大小为:

使用python制作一个解压缩软件

压缩的速度还是挺快的,对比一下RAR压缩之后的大小

使用python制作一个解压缩软件

可以看到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

标签:python,解压缩
0
投稿

猜你喜欢

  • 不得不承认:韩国的 Web 设计很唯美

    2009-05-13 13:26:00
  • Python 列表理解及使用方法

    2023-08-29 06:55:02
  • Python中几种导入模块的方式总结

    2021-09-20 08:17:14
  • Python批量裁剪图片的思路详解

    2023-05-11 03:55:59
  • javascript中Array()数组函数详解

    2024-04-17 10:23:36
  • 基于Python制作公交车站查询系统

    2022-10-03 04:34:03
  • 如何使用 Flask 做一个评论系统

    2023-12-08 21:04:48
  • 浅谈MySQL存储引擎选择 InnoDB还是MyISAM

    2009-05-10 20:02:00
  • 用Python的Django框架编写从Google Adsense中获得报表的应用

    2022-10-01 13:20:07
  • python中threading开启关闭线程操作

    2022-10-02 22:40:26
  • JavaScript实现Ajax总结

    2024-05-06 10:08:28
  • 通俗易懂详解Python基础五种下划线作用

    2024-01-01 06:36:22
  • JS比较两个数值的大小实例

    2024-04-17 10:41:03
  • python使用paramiko模块通过ssh2协议对交换机进行配置的方法

    2022-05-16 03:03:17
  • SQL Server 的T-SQL高级查询详解

    2024-01-17 21:21:04
  • python使用psutil模块获取系统状态

    2021-12-13 23:36:10
  • [ASP]提高数据显示效率--缓存探幽

    2008-05-18 13:51:00
  • Go语言映射内部实现及基础功能实战

    2024-04-27 15:39:30
  • python输出结果刷新及进度条的实现操作

    2022-09-24 15:13:15
  • Keras搭建孪生神经网络Siamese network比较图片相似性

    2023-01-27 04:16:28
  • asp之家 网络编程 m.aspxhome.com