python实现解压打包

直接上代码:

#coding=utf-8
import tkinter
import tkinter.filedialog
import zipfile
import os
import tkinter.simpledialog
import tkinter.messagebox

class Compress :
	def __init__(self):
		self.list1=[]
		self.root = tkinter.Tk()
		self.window()
		self.btn()
		self.root.mainloop()

	def window(self):
		self.root.minsize(550, 500)
		self.btn1 = tkinter.Button(self.root, text='文件类型')
		self.btn1.place(x=50, y=50,width=100,height=60)
		self.btn2 = tkinter.Button(self.root, text='压缩文件')
		self.btn2.place(x=220, y=50,width=100,height=60)
		self.btn3 = tkinter.Button(self.root, text='解压文件')
		self.btn3.place(x=390, y=50,width=100,height=60)
		self.label = tkinter.Label(self.root, text='请选择文件', bg='white', anchor='nw', justify='left',font=('微软雅黑',13))
		self.label.place(x=50, y=120, width=440, height=370)

	def Un_zip(self,e):
		# 解压文件
		jieyalujing = tkinter.filedialog.askopenfilenames(title='选择解压文件', filetypes=[('zip文件', '*.zip')])
		if len(jieyalujing) > 0:
			dirpath = tkinter.filedialog.askdirectory(title='选择解压路径')
			bol = bool(dirpath)
			if bol == True:
				zp = zipfile.ZipFile(jieyalujing, 'r', zipfile.ZIP_DEFLATED)
				zp.extractall(dirpath)
				tkinter.messagebox.showinfo(title='结果', message='文件解压成功,路径为:' + dirpath)
				zp.close()
			else:
				tkinter.messagebox.showinfo(title='提示', message='您提前退出解压失败')

	# 定义选择文件的按钮
	def xuanze(self,e):
		t = tkinter.Toplevel()
		t.minsize(310, 300)
		t.title('请选择压缩的文件类型')
		btn10 = tkinter.Button(t, text='文件', command=self.file)
		btn10.place(x=50, y=100, width=80, height=60)
		btn20 = tkinter.Button(t, text='文件夹', command=self.dir)
		btn20.place(x=140, y=100, width=80, height=60)


	# 循环窗口
	t.mainloop()

	def dir(self):
		# 弹出选择文件夹的窗口 并将选择的文件夹路径显示到label上
		self.dir_path = tkinter.filedialog.askdirectory(title='请选择要压缩的文件夹')
		if len(self.dir_path)>0:
			# os.listdit获取文件夹中的文件
			self.list1 += list(os.listdir(self.dir_path))
			self.label['text'] = '\n'.join(self.list1)
		else:
			self.list1.clear()
			self.label['text'] =('请选择文件')

	def file(self):
		# 弹出选择文件的窗口 并将选择的文件路径显示到label上
		file_path = tkinter.filedialog.askopenfilenames(title='请选择要压缩的文件', initialdir='C:\ ')
		if len(file_path) > 0:
			self.list1 += list(file_path)
			# print(list1)
			self.label['text'] = '\n'.join(self.list1)
		else:
			self.list1.clear()
			self.label['text'] =('请选择文件')

	def yasuo(self,e):
		if len(self.list1)>0:
			# 获取存放压缩文件的路径
			ysfile = tkinter.filedialog.asksaveasfilename(title='文件另存为', filetypes=(('zip文件', '*.zip'),))
			if len(ysfile)>0:
				#创建压缩文件
				zp=zipfile.ZipFile(ysfile+'.zip','w',zipfile.ZIP_DEFLATED)
				#取出要压缩的文件
				
				for path1 in self.list1:
					if os.path.isabs(path1):
						# 放入压缩文件
						zp.write(path1, os.path.basename(path1))
					else:
						zp.write(self.dir_path + '/' + path1, os.path.basename(path1))
						# print(os.path.dirname(self.dir_path)) + path1
						zp.close()
						tkinter.messagebox.showinfo(title='结果', message='文件压缩成功,路径为:' + ysfile)
						
					else:
						self.list1.clear()
						self.label['text'] = ('请选择文件')
					else:
						tkinter.messagebox.showerror('提示','请选择解压的文件')

	def btn(self):
		self.btn3.bind('<ButtonRelease-1>', self.Un_zip)
		self.btn2.bind('<ButtonRelease-1>',self.yasuo)
		self.btn1.bind('<ButtonRelease-1>',self.xuanze)

	ys=Compress()

 

注意:

1.上面设计到使用python开发的图形库tkiner,最好使用python3.0以上的版本,我自己没有找到3.0以下的图形库。

2.这个只能解压本程序打包的zip格式的压缩文件,我自己试了一下,用别的软件进行打包,然后用这个程序解压,发现解压失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值