python递归解压.zip文件

有时候,我们不光想要解压一个.zip文件,还想要解压这个zip文件里面的.zip文件,那么这个时候我们就需要使用到递归了,代码如下:

import os
import zipfile
import pathlib
import rarfile

def unzip_file(zip_src, dst_dir):
    r = zipfile.is_zipfile(zip_src)
    if r:
        fz = zipfile.ZipFile(zip_src, 'r')
        for file in fz.namelist():
            if pathlib.Path(file).suffix == '.zip':
                print(os.path.join(dst_dir, file), os.path.join(dst_dir, pathlib.Path(file).parent))
                unzip_file(os.path.join(dst_dir, file), os.path.join(dst_dir, pathlib.Path(file).parent))
            fz.extract(file, dst_dir)
    else:
        print('This is not zip')


# unzip_file("D:\test.zip", "D:\temp")

其中函数unzip_file里面的zip_src参数代表需要解压的.zip文件,dst_dir参数代表需要解压的目标路径。如果这个文件明明是.zip文件,但是程序却输出 This is not zip,那么你可以检查下路径中的左斜和右斜,我碰到这样的问题后,将路径中的右斜改为左斜就可以正常递归解压了。


版权声明:本文为weixin_46068528原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。