python多种压缩文件处理工具

一个小工具的故事

今天翻QQ盆友圈,看到老妈说好多好友晒收到的礼物,而自己没收到。
一开始我没反应过来,然后才想到今天是5月的第二个星期日"_"
所以,送什么好呢,我远在千里上学,难不成退点生活费回去@_@
我忽然想到一件事:
老妈的电脑之前没有处理压缩文件的软件,我帮她下载WinRaR解决完弹窗广告的问题后我就在想,为什么我不能自己写一个处理压缩包的程序呢,后来我看到python中有相关的库,所以回校后我就开始了。
我真的把这个程序写了出来,现在它可以处理rar、zip、tar、gz这几种类型的压缩包文件了,当然,它还在进一步的完善中,但日常使用已经可以了。

分界线

—————————————————

不多说,上代码

import zipfile
import rarfile
import tarfile
import os

def aaa():
	'''选项'''
	global list1
	global list2
	global list3
	global list4
	list1 = ["A","a"]
	list2 = ["B","b"]
	list3 = ["C","c"]
	list4 = ["D","d"]

def aab():
	'''解压'''
	global appendex_F_inp_1
	global F_P
	global F_inp_1
	global H_F

	F_inp_1 = input (">")
	'''路径转换'''
	T_F = F_inp_1.replace ("\\","\/")
	F_P = T_F.replace ("\"","")

	appendex_F_inp_1 = F_inp_1.split('.')[1]
	H_F = F_inp_1.replace (".%s"%appendex_F_inp_1, "")

	
def aac():
	'''自选路径'''
	global H_P
	global x_1
	print ("\n请将指定的文件夹拖入并拖入")
	P_H = input (">")
	T_F = P_H.replace ("\\","\/")
	H_P = T_F.replace ("\"","")
	x_1 = H_P

def aad():
	'''压缩'''
	global file1
	global file1_P
	global file_1_P_1_1

	file_1 = input(">")
	file_1_1 = file_1.replace ("\\","\/")
	file1 = file_1_1.replace ("\"","")
	file_1_P_1_1 = file1.split('\/')[-1]


def aae():
	'''文件格式'''
	global M
	global appendex_M
	print ("\n请输入压缩文件名(包括后缀名zip/rar,推荐rar格式)")
	M = input (">")
	appendex_M= M.split('.')[1]
	
def aaf():
	global appendex_N
	global N

	print ("\n请将相关的压缩包文件拖入")
	fileN = input (">")
	appendex_N= fileN.split('.')[1]	#后缀判定
	file_N = fileN.replace ("\\","\/")
	N = file_N.replace ("\"","")		#最终路径

def aag():
	global file3
	file_3 = input(">")
	file_3_3 = file_3.replace ("\\","\/")
	file3 = file_3_3.replace ("\"","")

def aah():
	pass
	
print ("A.解压\nB.压缩\nC.在压缩包中添加\nD.显示压缩包中的文件\n")
aaa()
cho_1 = input (">")
if cho_1 in list1:
	print ("\n请拖入要解压的文件")
	aab()
	print ("\nA.解压到当前文件夹\nB.自定义文件夹\n")
	aaa()
	cho_2 = input (">")
	if cho_2 in list1:
		if appendex_F_inp_1 == 'zip':
			os.mkdir(H_F)
			F_aaa= zipfile.ZipFile (F_P)
			F_aaa.extractall(H_F)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

		elif appendex_F_inp_1 == 'rar':
			os.mkdir(H_F)
			F_aaa= rarfile.RarFile (F_P)
			F_aaa.extractall(H_F)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

		elif appendex_F_inp_1 in ('tar','gz'):
			os.mkdir(H_F)
			F_aaa= tarfile.TarFile (F_P)
			F_aaa.extractall(H_F)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

	if cho_2 in list2:
		aac()
		if appendex_F_inp_1 == 'zip':
			F_aaa= zipfile.ZipFile (F_P)
			F_aaa.extractall(H_P)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

		elif appendex_F_inp_1 == 'rar':
			F_aaa= rarfile.RarFile (F_P)
			F_aaa.extractall(H_P)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

		elif appendex_F_inp_1 in ('tar','gz'):
			F_aaa= tarfile.TarFile (F_P)
			F_aaa.extractall(H_P)
			F_P.close()
			print ("请稍候")
			print ("任务已完成")

if cho_1 in list2:
	print ("\n压缩到\nA.第一个文件所在文件夹\nB.指定文件夹\n")
	aaa()
	cho_3 = input (">")
	if cho_3 in list1:
		aae()
		if appendex_M == 'zip':
			print ("\n请逐个拖入文件")
			aad()
			x = file1.replace (file_1_P_1_1,M)
			F_aaa= zipfile.ZipFile(x,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

		if appendex_M == 'rar':
			print ("\n请逐个拖入文件")
			aad()
			x = file1.replace ("%s"%file_1_P_1_1, "%s"% M)
			F_aaa= rarfile.RarFile(x,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

		if appendex_M in ('tar','gz'):
			print ("\n请逐个拖入文件")
			aad()
			x = file1.replace ("%s"%file_1_P_1_1, "%s"% M)
			F_aaa= tarfile.TarFile(x,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

	if cho_3 in list2:
		aac()
		aae()
		if appendex_M == 'zip':
			print ("\n请逐个拖入文件")
			aad()
			x_1 = H_P
			y = x_1.replace (H_P,H_P+"//"+M)
			F_aaa= zipfile.ZipFile(y,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

		if appendex_M == 'rar':
			print ("\n请逐个拖入文件")
			aad()
			x_1 = H_P
			y = x_1.replace (H_P,H_P+"//"+M)
			F_aaa= rarfile.RarFile(y,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

		if appendex_M in ('tar','gz'):
			print ("\n请逐个拖入文件")
			aad()
			x_1 = H_P
			y = x_1.replace (H_P,H_P+"//"+M)
			F_aaa= tarfile.TarFile(y,'a')
			F_aaa.write(file1)
			print ("请稍候")
			print ("任务已完成")
			while True:
				file_2 = input(">")
				if file_2 != 'end':
					F_aaa.write(file_2)
					print ("请稍候")
					print ("任务已完成")
				if file_2 == 'end':
					F_aaa.close()
					print ("任务已结束")
					break

if cho_1 in list3:
	aaf()
	if appendex_N == 'zip':
		print ("\n请逐个拖入文件")
		aag()
		F_aaa= zipfile.ZipFile(N,'a')
		F_aaa.write(file3)
		print ("请稍候")
		print ("任务已完成")
		while True:
			file_3 = input(">")
			if file_3 != 'end':
				F_aaa.write(file_3)
				print ("请稍候")
				print ("任务已完成")
			if file_3 == 'end':
				F_aaa.close()
				print ("任务已结束")
				break

	if appendex_N == 'rar':
		print ("\n请逐个拖入文件")
		aag()
		F_aaa= rarfile.RarFile(N,'a')
		F_aaa.write(file3)
		print ("请稍候")
		print ("任务已完成")
		while True:
			file_3 = input(">")
			if file_3 != 'end':
				F_aaa.write(file_3)
				print ("请稍候")
				print ("任务已完成")
			if file_3 == 'end':
				F_aaa.close()
				print ("任务已结束")
				break

	if appendex_N in ('tar','gz'):
		print ("\n请逐个拖入文件")
		aag()
		F_aaa= tarfile.TarFile(N,'a')
		F_aaa.write(file3)
		print ("请稍候")
		print ("任务已完成")
		while True:
			file_3 = input(">")
			if file_3 != 'end':
				F_aaa.write(file_3)
				print ("请稍候")
				print ("任务已完成")
			if file_3 == 'end':
				F_aaa.close()
				print ("任务已结束")
				break

if cho_1 in list4:
	aaf()
	if appendex_N == 'zip':
		print ("\n以下为压缩包内全部文件")
		F_aaa= zipfile.ZipFile(N,'r')
		x = F_aaa.printdir()
		print (x)
		F_aaa.close()

	if appendex_N == 'rar':
		print ("\n以下为压缩包内全部文件")
		F_aaa= rarfile.RarFile(N,'r')
		x = F_aaa.printdir()
		print (x)
		F_aaa.close()

	if appendex_N in ('tar','gz'):
		print ("\n以下为压缩包内全部文件")
		F_aaa= tarfile.TarFile(N,'r')
		x = F_aaa.printdir()
		print (x)
		F_aaa.close()

os.system('pause')

最大技术难题

在此之前,我写的关于处理文件的一些程序,都是本着自己能用、会用就行的原则,所以基本上处理的文件都必须在程序所在的文件夹中才可以处理,写这给程序时,我知道,不止我要用,我老妈也要用,肯定不能让操作过于复杂,不能每次都将处理文件移来移去,而且更不能每次输入长长的文件地址。
我误打误撞找到这样一个特性:

就是直接拖入文件可以输入一个与所需输入的地址类似的内容,所以,我只需要对它处理一下,就可以实现输入文件的效果(当然要不是输入到python中的地址一定要用"/“而不是”",也就不用那么麻烦)
于是就有了

	T_F = F_inp_1.replace ("\\","\/")#先改\
	F_P = T_F.replace ("\"","")#再去“”

虽然改后也不是那种最理想的形态,但的确是可以处理了。

结语

我给它命了个名,BlackBox Zip,毕竟我确实没给它加图形界面。。。
于是我把它打包成exe文件(pyinstaller -F 文件名)发给老妈,当作母亲节的礼物
在这里插入图片描述
————————————结束———————————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值