Cómo extraer archivos zip de forma recursiva en Python
Tengo un archivo zip que contiene tres archivos zip como este:
zipfile.zip\
dirA.zip\
a
dirB.zip\
b
dirC.zip\
c
Quiero extraer todos los archivos zip internos que están dentro del archivo zip en directorios con estos nombres (dirA, dirB, dirC).
Básicamente, quiero terminar con el siguiente esquema:
output\
dirA\
a
dirB\
b
dirC\
c
He probado lo siguiente:
import os, re
from zipfile import ZipFile
os.makedirs(directory) # where directory is "\output"
with ZipFile(self.archive_name, "r") as archive:
for id, files in data.items():
if files:
print("Creating", id)
dirpath = os.path.join(directory, id)
os.mkdir(dirpath)
for file in files:
match = pattern.match(filename)
new = match.group(2)
new_filename = os.path.join(dirpath, new)
content = archive.open(file).read()
with open(new_filename, "wb") as outfile:
outfile.write(content)
Pero solo extrae el archivo zip y termino con:
output\
dirA\
dirA.zip
dirB\
dirB.zip
dirC\
dirC.zip
Algunasugerencias incluyendo segmentos de código será muy apreciado porque he intentado tantas cosas diferentes y he leído los documentos sin éxito.