使用Python批量解压缩文件(zip,rar)
我们在前面批量爬取了PPT模板,但是下载的都是压缩文件,要是一个一个解压缩的话会耽误我们很多的时间,于是我们写一个批量解压缩的脚本去做这件事情!
#-*- coding: utf-8-*-//解压zip文件import zipfileimport osimport sys//reload(sys)//sys.setdefaultencoding('gbk') #如遇到无法识别中文而报错使用
# 将zip文件解压处理,并放到指定的文件夹里面去
defunzip_file(zip_file_name,destination_path):
archive= zipfile.ZipFile(zip_file_name,mode='r')for filein archive.namelist():
archive.extract(file, destination_path)
a="C:/Users/wy/Desktop/zipfile/zip" #zipfile 的路径
b="C:/Users/wy/Desktop/zipfile/unzip" #解压到路径unzip下
defzipfile_name(file_dir):
# 读取文件夹下面的文件名.zipL=[]for root, dirs, filesin os.walk(file_dir):for filein files:if os.path.splitext(file)[1]=='.zip': # 读取带zip 文件L.append(os.path.join(root, file))
#print(L)returnL
#入口函数
defmain():
fn=zipfile_name(a)for filein fn:unzip_file(file,b)if __name__=="__main__":main()print("done")
#zipfile解压中文zip文件会导致乱码,解决方案是要修改python库中的zipfile.py
#将文件中所有的'cp437'字符替换为'gbk'
发现解压的都是中文乱码,但是里面的内容还好不是中文乱码的,不过解决方案也是有的,只不过博主比较懒,就不改了
发现解压的都是zip格式的压缩包,zipfile这个库是Python自带的库,但是我们上面的rar格式的压缩包怎么办呢?当然也是有办法解压的,其实这两个库用法都差不多,我在下面写个Demo,由于本人能力有限找不到64位的unrar.dll,于是还有点错误
#-*- coding: utf-8-*-import zipfileimport rarfileimport osfrom unrarimport rarfileimport sysreload(sys)
sys.setdefaultencoding('gbk')
# 将zip文件解压处理,并放到指定的文件夹里面去
defunzip_file(zip_file_name,destination_path):
archive= zipfile.ZipFile(zip_file_name,mode='r')for filein archive.namelist():
archive.extract(file, destination_path)
defunrar_file(rar_file_name,destination_path):
archive= rarfile.RarFile(rar_file_name,mode='r')for filein archive.namelist():
archive.extract(file, destination_path)
a="C:/Users/wy/Desktop/zipfile/zip" #zipfile 的路径
b="C:/Users/wy/Desktop/zipfile/unzip" #解压到路径unzip下
defzipfile_name(file_dir):
# 读取文件夹下面的文件名.zipL=[]for root, dirs, filesin os.walk(file_dir):for filein files:if os.path.splitext(file)[1]=='.zip': # 读取带zip 文件L.append(os.path.join(root, file))
#print(L)returnL
defrarfile_name(file_dir):
# 读取文件夹下面的文件名.rarX=[]for root, dirs, filesin os.walk(file_dir):for filein files:if os.path.splitext(file)[1]=='.rar': # 读取带rar 文件X.append(os.path.join(root, file))
#print(X)returnX
defmain():
fn=zipfile_name(a)
bn=rarfile_name(a)for filein fn:unzip_file(file,b)for filein bn:unrar_file(file,b)if __name__=="__main__":main()print("done")
#zipfile解压中文zip文件会导致乱码,解决方案是要修改python库中的zipfile.py,将文件中所有的'cp437'字符替换为'gbk'
由于我下载不到64位的unrar.dll,如果有人解决这个问题,请指教,不胜感激