如下代码,可以使用一个方法解压各类型文件,也可以单独使用对应类型的解压方法。最后放在路径 {file_name}_files下
比如:
a = Test()
a.UnTargz(file_name)
import os
import zipfile
import gzip
import tarfile
class Test:
def UnTargz(self, file_name):
import tarfile
f_name = file_name.replace(".gz", "")
g_file = gzip.GzipFile(file_name)
open(f_name, "wb+").write(g_file.read())
print("fname文件名:"+str(f_name))
# 然后解压tar文件
tarfile = tarfile.open(f_name)
names = tarfile.getnames()
if os.path.isdir(file_name + "_files"):
pass
else:
os.mkdir(file_name + "_files")
for name in names:
print(name)
tarfile.extract(name, file_name+"_files/")
tarfile.close()
g_file.close()
def UnTar(self, file_name):
import tarfile
tarfile = tarfile.open(file_name)
names = tarfile.getnames()
if os.path.isdir(file_name + "_files"):
pass
else:
os.mkdir(file_name + "_files")
for name in names:
print(name)
tarfile.extract(name, file_name+"_files/")
tarfile.close()
# rar通常为window下使用,须要额外的Python包rarfile;
# python3 -m pip install rarfile
def UnRar(self, file_name):
import rarfile
import os
rarfile = rarfile.RarFile(file_name)
if os.path.isdir(file_name + "_files"):
pass
else:
os.mkdir(file_name + "_files")
# os.chdir() 方法用于改变当前工作目录到指定的路径
if os.chdir(file_name + "_files"):
rarfile.extractall()
rarfile.close()
def unZip(self, file_name):
zip_file = zipfile.ZipFile(file_name)
if os.path.isdir(file_name + "_files"):
pass
else:
print('Problem occurred during generating libdoc for', os.mkdir(file_name + "_files"))
for names in zip_file.namelist():
zip_file.extract(names, file_name + "_files/")
zip_file.close()
def unZipFiles(self, file_name):
if file_name.endswith('tar.gz'):
self.UnTargz(file_name)
elif file_name.endswith('zip'):
self.unZip(file_name)
elif file_name.endswith('tar'):
self.UnTar(file_name)
elif file_name.endswith('rar'):
self.UnRar(file_name)
print("OK!!!!!")
if __name__ == '__main__':
file_name = r'C:\Users\Administrator\Downloads\Log.tar.gz'
a = Test()
a.unZipFiles(file_name)
# a.UnTargz(file_name)