#压缩软件

#导入所需模块,设置界面

import os

import zipfile

import tkinter

import tkinter.messagebox

import tkinter.filedialog

root = tkinter.Tk()

root.title('我的压缩软件')

root.minsize(300,400)

#设置需要压缩文件的路径变量

filenames = []

#添加文件的函数

def addfiles():

#全局化变量

global filenames

#弹出文件选择对话框,选择需要添加的文件

files = tkinter.filedialog.askopenfilenames()

#将选择的文件添加到列表filenames中

filenames += list(files)

#将列表中的数据连接成字符串

strs = '\n'.join(filenames)

#将需要压缩文件的路径写入标签中显示

label['text'] = strs

#判断是否添加了文件,显示添加文件的个数

global num

num = strs.count('\n') + 1

if filenames == []:

tkinter.messagebox.showinfo(title='提示信息', message='您好,您还未添加任何文件')

else:

tkinter.messagebox.showinfo(title='提示信息', message='您好,您共添加了{}个文件'.format(num))

#压缩文件的函数

def zip_files():

#创建压缩文件的目录变量

global path

path = './myzip.zip'

#提示是否需要对当前文件进行压缩

result = tkinter.messagebox.askokcancel(title='提示信息', message='是否需要对当前{}个文件进行压缩?'.format(num))

#根据用户选择是否需要创建压缩文件

if result == True:

# 创建压缩文件

zp = zipfile.ZipFile(path, 'w')

# 向压缩文件中添加文件内容

#遍历添加文件的列表

for file in filenames:

global dir

dir = os.path.basename(file)

zp.write(file,dir)

# 关闭压缩文件

zp.close()

#判断压缩文件是否创建成功

if os.path.exists(path):

tkinter.messagebox.showinfo(title = '提示信息',message = '压缩文件创建成功!!!\n目录为:'+ path)

else:

tkinter.messagebox.showerror(title = '错误信息',message = '压缩文件创建失败!!!')

#解压文件的函数

def unzip_files():

try:

# 选择解压文件夹

tkinter.messagebox.showinfo(title='提示信息', message='请选择选择解压文件!!!')

unzipfile = tkinter.filedialog.askopenfilename()

#提示用户是否解压当前文件

result = tkinter.messagebox.askokcancel(title='提示信息', message='是否需要对当文件进行解压?')

if result == True:

# 选择解压的路径

tkinter.messagebox.showinfo(title='提示信息', message='请选择选择解压路径!!!')

unzippath = tkinter.filedialog.askdirectory()

# 打开解压文件夹

unzp = zipfile.ZipFile(unzipfile)

# 解压所有文件

unzp.extractall(unzippath)

# 关闭压缩文件

unzp.close()

tkinter.messagebox.showinfo(title='提示信息', message='解压文件成功!!!')

else:

tkinter.messagebox.showinfo(title='提示信息', message='您已取消解压,\n解压文件失败!!!')

# 判断解压是否成功

except:

tkinter.messagebox.showerror(title='错误信息', message='系统程序错误,\n解压文件失败!!!')

#摆放按钮组件

btn_add = tkinter.Button(root,text = '添加文件',command = addfiles)

btn_add.place(x = 10,y = 20 )

btn_zip = tkinter.Button(root,text = '压缩文件',command = zip_files)

btn_zip.place(x = 110,y = 20)

btn_unzip = tkinter.Button(root,text = '解压文件',command = unzip_files)

btn_unzip.place(x = 210,y = 20)

#显示信息区域

label = tkinter.Label(root,text = '暂时没有文件信息',bg = 'white',anchor = 'nw',justify = 'left')

label.place(x = 10,y = 70 ,width = 280,height = 300)

root.mainloop()

华为简易压缩算法python_Python(9) --实现一个简单的压缩软件/解压软件的功能相关推荐

  1. Java制作一个盒子程序_编写一个简单的Java程序,模拟计算器的功能。

    提问:编写一个简单的Java程序,模拟计算器的功能. 网友回答: 程序参考: import java.awt.*; import java.awt.event.ActionEvent; import ...

  2. linux把一个大文件压缩,linux大文件压缩及解压需要注意问题

    注意: 大文件压缩及解压需要在后台进行,如果要查看解压详情,就要输出重定向. 远程服务器,要防止网络断开连接,导致终端关闭,此时终端断开,即使后台进行,解压以及压缩也会停止.解决方法:在指令前加noh ...

  3. 一款操作简单、功能实用的压缩解压软件-360压缩提供下载

    360压缩软件官方版是一款操作简单.功能实用的压缩解压软件,360压缩软件可以帮助你解压需要的压缩文件,支持的压缩文件格式多样,解压压缩速度也是非常快的.不仅如此360压缩软件还可以帮你检测压缩文件, ...

  4. 教你制作一个简单的进销存管理软件,值得收藏!

    首先要制作进销存软件,要具体了解进销存到底是什么含义,这三个字分别代表什么流程,在整个进销存管理中的组成.再根据不同的流程制作进销存软件相对应的部分-- 01进销存的定义 "进"- ...

  5. [Apple Shapr3D]【续更】【shapr3D】认识Shapr3D,一个简单易用的设计类软件

    本文适合对象:工程设计.土木工程类的学生可以参考参考,以及对3D建模感兴趣的朋友!艺术设计的同学们,等等我!nomad我晚些再写!!! 使用的软件:Shapr3D 使用的硬件:iPad 9 gener ...

  6. 一个42KB的文件,解压完其实是个4.5PB的“炸弹”

    你听说过 ZIP 炸弹吗? 一个很小很小的,几十 KB 的压缩过后的文件,解压以后有几百万 GB ,好像炸弹一样. 在继续介绍它之前,差评君想先问问各位都用过哪些压缩软件... WinRAR ? 或者 ...

  7. 手把手教你使用Python解决简单的zip文件解压密码

    简介 使用的核心模块是python标准库中的zipfile模块.这个模块可以实现zip文件的各种功能,具体可以查看官方参考文档.这里的暴力破解的意思是对密码可能序列中的值一个一个进行密码尝试,这对人来 ...

  8. 一个简单有趣的爬虫-----爬取百度翻译功能

    首先确定爬取的网址:https://fanyi.baidu.com/sug 我们爬取翻译功能时应对request进行简单伪装,编写headers: base_url = 'https://fanyi. ...

  9. 使用jQuery,写一个简单的轮播图,实现切换功能!

    1.谈到jquery,想必大家都知道,它是一个js库.使用起来简单又方便,接下来就给大家看看我用jquery实现的轮播图吧! <!DOCTYPE html> <html lang=& ...

最新文章

  1. 对GET/POST请求返回cookie中的键值对进行重新组合
  2. linux编程:getenv,putenv,setenv
  3. 水晶易表调用C#的WebService,返回数据集合
  4. 47session 方法
  5. 话里话外:从信息系统两大特性理解信息化的实施难度
  6. Linux知识(4)----文件系统结构
  7. GitHub 开发者页面迁至 github.io
  8. 电信接入点服务器修改,修改apn加快电信4g网速(电信最佳apn接入点)
  9. 吴恩达深度学习教程及资料
  10. c语言case后语句,switch语句中case后的标号是什么
  11. Linux每日一讲:awk命令
  12. python计算学习,《统计学习方法》的Python实现:(1)感知机
  13. item2vec--word2vec在推荐领域的使用
  14. Human-in-the-Loop Optimization of Exoskeleton Assistance Via Online Simulation of Metabolic Cost
  15. 微信小程序开发报错及解决记录
  16. 笔记本加装SSD重装系统win10引导始终指向原系统的问题终极解决方法
  17. 绝对女神 - Introduction
  18. 搜索大全——实用搜索引擎
  19. HTML常用的转义字符汇总
  20. 决定计算机运行速度的是哪个配件,计算机的CPU等级决定了计算机的速度. 主要方面是什么?...

热门文章

  1. QT中的QTableView+QTableWidget
  2. Python下载中国数据库大会(DTCC2020)PPT全集
  3. MySQL流浪记(七)—— MySQL删除表数据
  4. 安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断
  5. postgresql 安装使用
  6. post和get请求的区别
  7. java 双重检查锁 有序_Java中的双重检查锁(double checked locking)
  8. Modbus协议栈应用实例之一:Modbus RTU主站应用
  9. spring boot maven项目返回值乱码的解决方法
  10. Spring的@Scheduled 动态更新cron表达式