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


Posted in Python onNovember 13, 2019

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制作一个解压缩软件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python list转dict示例分享
Jan 28 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
Apr 28 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
如何运行带参数的python脚本
Nov 15 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
python global和nonlocal用法解析
Feb 03 Python
python文件目录操作之os模块
May 08 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 #Python
基于python实现把图片转换成素描
Nov 13 #Python
Django连接数据库并实现读写分离过程解析
Nov 13 #Python
Pandas操作CSV文件的读写实现方法
Nov 13 #Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 #Python
Series和DataFrame使用简单入门
Nov 13 #Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 #Python
You might like
header跳转和include包含问题详解
2012/09/08 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
Jquery $.getJSON 在IE下的缓存问题解决方法
2014/10/10 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Angular路由简单学习
2016/12/26 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
用matplotlib画等高线图详解
2017/12/14 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python之Class&Object用法详解
2019/12/25 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
工厂厂长的职责
2013/12/12 职场文书
综合内勤岗位职责
2014/04/14 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2015年化验室工作总结
2015/04/23 职场文书
爱国电影观后感
2015/06/19 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers