文章目录
一、学习目标:1、安装模块:2、rarfile.RarCannotExec: Cannot find working tool问题:3、批量解压代码:一、学习目标:
批量解压一个目录下的所有rar和zip的压缩包。
之前只是解压zip,今天想解压的里面也有rar,奈何之前脚本跑不了,然后就优化了下。
我之前的俩篇博客:
python 解压zip压缩文件,并且还原中文文件名乱码问题
python对window对一个目录下的所有子目录批量压缩
1、安装模块:
pip install rarfile
2、rarfile.RarCannotExec: Cannot find working tool问题:
解压rar会报错:
这个我在本机电脑找到了,放到了蓝奏云上面。需要的下载即可。
下载文件:/ikZcNkw4kkb
然后把文件放到项目的Scripts
目录下面。
参考文章:
/weixin_30389003/article/details/99440841
3、批量解压代码:
import zipfileimport osfrom pathlib import Pathimport rarfileimport osdef unzip_file(file_zip_path):new_zip_dir = file_zip_path.rsplit('\\',1)[0] + '/data'if not os.path.isdir(new_zip_dir):os.makedirs(new_zip_dir)zFile = zipfile.ZipFile(file_zip_path, "r")# ZipFile.namelist(): 获取ZIP文档内所有文件的名称列表for fileM in zFile.namelist():# zFile.extract(fileM, new_zip_dir)# 解压出来单个文件extracted_path = Path(zFile.extract(fileM,new_zip_dir))# print("fileM.encode('cp437').decode('gbk')",fileM.encode('cp437').decode('gbk'))# print("extracted_path",extracted_path)# 文件重命名,将中文的文件名还原extracted_path.rename(new_zip_dir+'//'+fileM.encode('cp437').decode('gbk'))zFile.close()return new_zip_dirdef unrar_file(filename):new_zip_dir = filename.rsplit('\\', 1)[0] + '/data'if not os.path.isdir(new_zip_dir):os.makedirs(new_zip_dir)rar = rarfile.RarFile(filename, mode='r') # mode的值只能为'r'rar.extractall(new_zip_dir) # 解压文件rar.close() # 关闭文件,必须有,释放内存if __name__ == '__main__':dir_path = r"压缩包的目录"file_name_list = os.listdir(dir_path)for file_name in file_name_list:file_name_path = os.path.join(dir_path,file_name)if os.path.isfile(file_name_path):print("准备解压",file_name_path)if file_name.endswith('.zip'):unzip_file(file_name_path)elif file_name.endswith('.rar'):unrar_file(file_name_path)else:print("不是压缩文件",file_name_path)else:print("不是文件",file_name_path)