一、说明
为了解决自己对解压文件带来的工作压力,着手编写解压代码,发现Python能够很快完成。本次只是试验性质,但已能达到目标。
注意:本代码里的路径是绝对路径,看客请注意,使用请结合情况再做修改。
二、代码
#!/usr/bin/python
# -*- encoding:utf-8 -*-
import zipfile,rarfile
import tarfile
import os,shutil
################################################################
##读取解压后的文件列表 Read_file_list()
#################################################################
def read_file_list(relase_file_dir):
for root, dirs, files in os.walk(relase_file_dir, topdown=False):
# wildcard=".SchDoc,PcbDoc,.exe,.java"
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
###################
print("---输出所有文件及文件夹--------")
path = "D:/Data/temp"
unzip_path="D:/Data/temp/unzip/utarzip"
dirs = os.listdir(path)
for file in dirs:
print(file)
'''
#--------解压当前目录下的所有ZIP文件-----------------
file_list = os.listdir(r'.')
for file_name in file_list:
if os.path.splitext(file_name)[1] == '.zip':
print(file_name)
file_zip = zipfile.ZipFile(file_name, 'r')
for file in file_zip.namelist():
file_zip.extract(file, r'.')
file_zip.close()
# os.remove(file_name)
'''
#删除文件夹下的所有文件
def del_file(file_name):
if os.path.exists(unzip_path):
shutil.rmtree(unzip_path)
else:
print("-无此路径--")
for str_i in os.listdir(file_name):
del_path = os.path.join(file_name, str_i)
os.remove(del_path)
#增加编码、解码,解决部分解出来后的乱码问题
# 默认模式r,读
relase_file_dir = "D:/Data/temp/unzip/"
del_file(relase_file_dir); #删除文件夹下的所有文件
file_zip = zipfile.ZipFile("D:/Data/temp/zip/Desktop.zip", 'r')
# 返回所有文件夹和文件
for file in file_zip.namelist():
file_zip.extract(file, relase_file_dir)
# print(zip_file)
# print(zip_file.encode('utf-8'))
try:
zip_file_name = file.encode('cp437').decode('gbk')
except:
zip_file_name = file.encode('utf-8').decode('utf-8')
print(zip_file_name)
# file_zip = zipfile.ZipFile("D:/Data/temp/zip/Desktop.zip", 'r')
# for file in file_zip.namelist():
os.chdir(relase_file_dir)
os.rename(file, zip_file_name)
file_zip.close()
########################################
# 解压RAR文件,需要import rarfile
# 需要把unrar.exe放到环境变量路径里,不然无法解压
################################
rar_path="D:/Data/temp/rar/Desktop.rar"
rf=rarfile.RarFile(rar_path)
rf.extractall(relase_file_dir) #解压指定文件路径
print("OVER")
read_file_list(relase_file_dir)
################################################################
########################################
# 解压tar.gz文件
# 说明:
################################
tar_path="D:/Data/temp/tar/zn.tar.gz"
folder=os.path.exists(unzip_path)
if not folder:
os.mkdir(unzip_path)
print("cteate the path of utarzip")
else:
print("alread have this folder")
rf=tarfile.open(tar_path)
rf.extractall(unzip_path)