解压rar文件可能会报错
下载unrar.exe,放在py文件同级目录解决报错问题
unrar.exe链接:https://pan.baidu.com/s/1jov4Qss3OuZPC3jGAyVx3A
提取码:kn7t
import os
# import shutil
import zipfile,tarfile,gzip,rarfile
def unpack_file(root,f,destination_path,file_flag=".zip"):
file_name=os.path.join(root, f);
if file_flag=='.zip':
archive = zipfile.ZipFile(file_name,mode='r')
for file in archive.namelist():
archive.extract(file, destination_path);
elif file_flag=='.rar':
archive = rarfile.RarFile(file_name,'r'); #需要解压的文件
for file in archive.namelist():
archive.extract(file, destination_path);
# archive.extractall(destination_path);
elif file_flag=='.gz':
destination_path=os.path.join(destination_path, f)
f_name = destination_path.replace(".gz", "");
g_file = gzip.GzipFile(file_name);
open(f_name, "wb+").write(g_file.read());
g_file.close(); #关闭gzip对象
elif file_flag=='.tar':
archive = tarfile.open(file_name,mode='r');
for file in archive.getnames():
archive.extract(file, destination_path);
if __name__ == '__main__':
file_flag = '.rar' #修改需解压的格式 例如:.tar .zip .rar .gz
rootdir=r"D:\AppData\PyCode\test";#需要解压的文件地址
new_file_zip=rf"{rootdir}\unpack";#解压后文件地址
os.makedirs(new_file_zip,exist_ok=True); #创建目录存放文件
for root, dirs, files in os.walk(rootdir,topdown=True):#遍历文件
for f in files:
if f.endswith(file_flag): #判断文件后缀是否符合
unpack_file(root,f,new_file_zip,file_flag);
break;