有时候,我们不光想要解压一个.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,那么你可以检查下路径中的左斜和右斜,我碰到这样的问题后,将路径中的右斜改为左斜就可以正常递归解压了。