使用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单链表的简单实现方法
Sep 23 Python
Python3生成手写体数字方法
Jan 30 Python
wxpython实现图书管理系统
Mar 12 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python3+selenium自动化测试框架详解
Mar 17 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 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
php.ini中文版
2006/10/09 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
图解js图片轮播效果
2015/12/20 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
js断点调试经验分享
2017/12/08 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
React Native悬浮按钮组件的示例代码
2018/04/05 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
Python实现获取某天是某个月中的第几周
2015/02/11 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Python的pycurl包用法简介
2015/11/13 Python
Python用模块pytz来转换时区
2016/08/19 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
基于python3生成标签云代码解析
2020/02/18 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
美国牛仔品牌:True Religion
2018/11/16 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
助人为乐好少年事迹材料
2014/08/18 职场文书
教师节学生演讲稿
2014/09/03 职场文书
个人年度总结报告
2015/03/09 职场文书
2016十一国庆节感言
2015/12/09 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python