使用Python批量解压缩文件(zip,rar)

使用Python批量解压缩文件(zip,rar)

我们在前面批量爬取了PPT模板,但是下载的都是压缩文件,要是一个一个解压缩的话会耽误我们很多的时间,于是我们写一个批量解压缩的脚本去做这件事情!
使用Python批量解压缩文件(zip,rar)_第1张图片

# -*- coding: utf-8 -*-
//解压zip文件
import zipfile
import os
import sys

//reload(sys)
//sys.setdefaultencoding('gbk') #如遇到无法识别中文而报错使用

# 将zip文件解压处理,并放到指定的文件夹里面去

def unzip_file(zip_file_name,destination_path):
    archive = zipfile.ZipFile(zip_file_name,mode='r')
    for file in archive.namelist():
        archive.extract(file, destination_path)

        
a = "C:/Users/wy/Desktop/zipfile/zip"  #zipfile 的路径
b = "C:/Users/wy/Desktop/zipfile/unzip"   #解压到路径unzip下

def zipfile_name(file_dir):
    # 读取文件夹下面的文件名.zip
    L=[]
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.zip':    # 读取带zip 文件
                L.append(os.path.join(root, file))
                #print(L)      
    return L

#入口函数
def main():
    fn=zipfile_name(a)
    for file in fn:
        unzip_file(file,b)
    
        
if __name__ == "__main__":
    main()
print("done")

#zipfile解压中文zip文件会导致乱码,解决方案是要修改python库中的zipfile.py
#将文件中所有的'cp437'字符替换为'gbk'

发现解压的都是中文乱码,但是里面的内容还好不是中文乱码的,不过解决方案也是有的,只不过博主比较懒,就不改了
使用Python批量解压缩文件(zip,rar)_第2张图片
发现解压的都是zip格式的压缩包,zipfile这个库是Python自带的库,但是我们上面的rar格式的压缩包怎么办呢?当然也是有办法解压的,其实这两个库用法都差不多,我在下面写个Demo,由于本人能力有限找不到64位的unrar.dll,于是还有点错误

# -*- coding: utf-8 -*-
import zipfile
import rarfile
import os
from unrar import rarfile
import sys

reload(sys)
sys.setdefaultencoding('gbk')

# 将zip文件解压处理,并放到指定的文件夹里面去

def unzip_file(zip_file_name,destination_path):
    archive = zipfile.ZipFile(zip_file_name,mode='r')
    for file in archive.namelist():
        archive.extract(file, destination_path)

def unrar_file(rar_file_name,destination_path):
    archive = rarfile.RarFile(rar_file_name,mode='r')
    for file in archive.namelist():
        archive.extract(file, destination_path)
        
a = "C:/Users/wy/Desktop/zipfile/zip"  #zipfile 的路径
b = "C:/Users/wy/Desktop/zipfile/unzip"   #解压到路径unzip下

def zipfile_name(file_dir):
    # 读取文件夹下面的文件名.zip
    L=[]
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.zip':    # 读取带zip 文件
                L.append(os.path.join(root, file))
                #print(L)      
    return L

def rarfile_name(file_dir):
    # 读取文件夹下面的文件名.rar
    X=[]
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.rar':    # 读取带rar 文件
                X.append(os.path.join(root, file))
                #print(X)      
    return X

def main():
    fn=zipfile_name(a)
    bn=rarfile_name(a)
    for file in fn:
        unzip_file(file,b)
    for file in bn:
        unrar_file(file,b)
            
if __name__ == "__main__":
    main()
print("done")

#zipfile解压中文zip文件会导致乱码,解决方案是要修改python库中的zipfile.py,将文件中所有的'cp437'字符替换为'gbk'

由于我下载不到64位的unrar.dll,如果有人解决这个问题,请指教,不胜感激
使用Python批量解压缩文件(zip,rar)_第3张图片
使用Python批量解压缩文件(zip,rar)_第4张图片

你可能感兴趣的:(Python,批量解压文件,zip,rar)