欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Python批量解压压缩包中的某一类型的文件

程序员文章站 2022-03-03 21:01:55
...

       前段时间在工作过程中,需要对压缩包集中的某一类文件进行批量解压。如果手动解压压缩包,解压完成后还需要手动删除不同目录下的其它文件。而且当压缩包数量较大时,操作起来更为费劲。因此,为了偷懒,便随手写了这个小程序。

       程序段很短,代码如下所示:

import zipfile
import tarfile
import rarfile
import os
import shutil
from glob import glob
import sys

Pos_zip=sys.argv[1]
Pos_unzip=sys.argv[2]
Type=sys.argv[3]

files = glob(Pos_zip)

def un_zip(filename):
	zip_file = zipfile.ZipFile(filename)
	a_name=zip_file.namelist()
	if (filename.find(".zip")) > -1:
		zip_file = zipfile.ZipFile(filename)
		a_name=zip_file.namelist()
	if (filename.find(".tar")) > -1:
		zip_file = tarfile.open(filename)
		a_name=zip_file.getnames()
	if (filename.find(".rar")) > -1:
		zip_file = rarfile.RarFile(filename)
		a_name=zip_file.namelist()
	for names in a_name:
		if (names.find(Type)) > -1:
			try:
				zip_file.extract(names,Pos_unzip)
			except:
				print(filename+"解压失败!")
				pass
	print (filename+"解压完成!")
for file_name in files:
	un_zip(file_name)

程序主要思路为:1.先将需要解压的所有压缩文件的文件名进行读取;2.从步骤1中读取一个压缩文件名,对此压缩文件类型进行判断;3.根据步骤2中判断压缩文件类型,对压缩文件中的文件进行提取;4判断步骤1的压缩文件是否都遍历,若是,则程序结束,否则返回步骤2.

在此给大家展示一个程序示例:

一个目录下有3个不同格式的压缩文件(当然压缩文件数量还可以增加,这里举个例子),三个压缩文件如下图所示:

用Python批量解压压缩包中的某一类型的文件

在Sample1.zip文件中存在以下文件:

用Python批量解压压缩包中的某一类型的文件

用Python批量解压压缩包中的某一类型的文件


在Sample2.zip文件中存在以下文件:

用Python批量解压压缩包中的某一类型的文件用Python批量解压压缩包中的某一类型的文件

在Sample3.tar文件中存在以下文件:

用Python批量解压压缩包中的某一类型的文件用Python批量解压压缩包中的某一类型的文件

我们需要将这个三个文件中的RTF格式文件解压出的话,即输入如下所示的命令:

用Python批量解压压缩包中的某一类型的文件

此命令中包含三个参数:第一个参数为压缩包存放的源目录地址;第二个参数为解压文件存放的目录地址;第三个参数为需要解压的文件名后缀,例如在本例中解压RTF格式文件后缀为“.rtf”。

程序运行结束后:

用Python批量解压压缩包中的某一类型的文件用Python批量解压压缩包中的某一类型的文件用Python批量解压压缩包中的某一类型的文件

我们可以看到三个压缩文件中的所有RTF格式文件均被解压出来了。

程序源码及测试用例下载地址:https://github.com/XiaoYaoNet/Zip